NHibernate和64位应用程序

时间:2017-01-07 14:05:28

标签: c# nhibernate fluent-nhibernate

我们正在使用NHibernate连接到win32中的Access数据库,NHibernate版本是2.1.0.4,因为很长时间以及它正常工作我们在项目中使用它作为参考:

  • Castle Core
  • Castle.DynamicProxy2
  • FluentNHibernate
  • Iesi.Collections
  • NHibernate.ByteCode.Castle
  • NHibernate.JetDriver

我现在需要以x64位重建项目,我没有改变DLLS我保持不变,当我运行我的项目时我有错误:

  

创建SessionFactory时使用了无效或不完整的配置....

代码是:

    FluentConfiguration config = Fluently.Configure();

        // Configuration to use with Access
        config.Database(
            FluentNHibernate.Cfg.Db.JetDriverConfiguration
                .Standard
                .Provider("NHibernate.Connection.DriverConnectionProvider")
                 .Dialect("NHibernate.JetDriver.JetDialect, NHibernate.JetDriver")
                 .Driver("NHibernate.JetDriver.JetDriver, NHibernate.JetDriver")
                .ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")
                .ConnectionString(c => c.DatabaseFile(_dbName.FullName))
                .ShowSql()
          );

我尝试在x64中重建以下项目:   - NHibernate   - 城堡核心   - FluentNHibernate   - NHibernate.ByteCode.Castle

但我没有找到重建x64的项目:   - Castle.DynamicProxy2   - NHibernate.JetDriver

我将代码修改为:

FluentConfiguration config = Fluently.Configure();

// Configuration to use with Access
config.Database(FluentNHibernate.Cfg.Db.JetDriverConfiguration
                .Standard
                .Provider("NHibernate.Connection.DriverConnectionProvider")
                 .Dialect("NHibernate.JetDriver.JetDialect, NHibernate.JetDriver")
                 .Driver("NHibernate.JetDriver.JetDriver, NHibernate.JetDriver")
                .ConnectionString(c => c.DatabaseFile(_dbName.FullName))
                .ShowSql()
          );
   config.ProxyFactoryFactory("NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle")

请帮忙解决这个问题吗?

更新:

我用64位重建DLL:

  • NHibernate的
  • Castle Core
  • FluentNHibernate
  • NHibernate.ByteCode.Castle
  • NHibernate.JetDriver
  • ies.collection

我将配置代码更改为:

   return Fluently.Configure()
        .Database(
            JetDriverConfiguration.Standard.ConnectionString(
        c => c.DatabaseFile(_dbName.FullName))
        )
        .Mappings(m => m.FluentMappings.AddFromAssemblyOf<AccessMapping>().Conventions.Add(DefaultLazy.Never()));

我现在收到了错误消息:

  

“Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册

我安装了

Microsoft Access Database Engine 2010 Redistributable

Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

所述

但仍然有同样的错误

我的电脑配置:

  • Visual Studio 2012
  • Windows 10 64位
  • office 2016 64 bts

0 个答案:

没有答案