Fluent NHibernate-配置Oracle数据提供程序ODP

Fluent NHibernate-配置Oracle数据提供程序ODP,oracle,configuration,fluent-nhibernate,odp.net,Oracle,Configuration,Fluent Nhibernate,Odp.net,我对NHibernate和流利的NHibernate是全新的,我正在努力让以下配置发挥作用 private static ISessionFactory CreateSessionFactory() { return Fluently.Configure() .Database( OracleDataClientConfiguration.Oracle10.ConnectionString("Data Source=mysource;User ID=myi

我对NHibernate和流利的NHibernate是全新的,我正在努力让以下配置发挥作用

private static ISessionFactory CreateSessionFactory()
{
     return Fluently.Configure() 
       .Database(
       OracleDataClientConfiguration.Oracle10.ConnectionString("Data Source=mysource;User ID=myid;Password=mypwd;")                  
          )
         .Mappings(m =>
            m.FluentMappings.AddFromAssemblyOf<Program>())
         .BuildSessionFactory();

    }
私有静态ISessionFactory CreateSessionFactory()
{
流畅地返回。Configure()
.数据库(
OracleDataClientConfiguration.Oracle10.ConnectionString(“数据源=mysource;用户ID=myid;密码=mypwd;”)
)
.Mappings(m=>
m、 FluentMappings.AddFromAssemblyOf())
.BuildSessionFactory();
}
我引用了Oracle.DataAccess程序集。我正在使用VS2010和.NET4

我得到以下例外情况:

未处理FluentNHibernate.Cfg.FluentConfigurationException Message=创建SessionFactory时使用了无效或不完整的配置。有关详细信息,请检查潜在原因集合和InnerException

来源=FluentNHibernate 堆栈跟踪: 在d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:第98行中的FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()处 在C:\Projects\CPS Test Concepts\Main\Source\CPSTestConcepts\Source\HibernateLearning\Program.cs中的HibernateLearning.Program.CreateSessionFactory()处:第48行 在C:\Projects\CPS Test Concepts\Main\Source\CPSTestConcepts\Source\HibernateLearning\Program.cs中的HibernateLearning.Program.Main(字符串[]args)处:第21行 位于System.AppDomain.\u nExecuteAssembly(RuntimeAssembly程序集,字符串[]args) 位于System.AppDomain.ExecuteAssembly(字符串汇编文件、证据汇编安全性、字符串[]args) 在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()上 位于System.Threading.ThreadHelper.ThreadStart\u上下文(对象状态) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔ignoreSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态) 位于System.Threading.ThreadHelper.ThreadStart()处 InnerException:NHibernate.hibernateeException Message=无法从NHibernate.driver.OracleDataClientDriver创建驱动程序,NHibernate,版本=2.1.2.4000,区域性=neutral,PublicKeyToken=aa95f207798dfdb4。 来源=NHibernate 堆栈跟踪: 位于NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary
2设置)
在NHibernate.Connection.ConnectionProvider.Configure处(IDictionary
2设置) 在NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary
2设置)中
在NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary
2属性)中 在NHibernate.Cfg.Configuration.BuildSettings()中 在NHibernate.Cfg.Configuration.BuildSessionFactory()中 在d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs:第93行中的FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()处 InnerException:System.Reflection.TargetException Message=调用目标已引发异常。 Source=mscorlib 堆栈跟踪: 在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型、Boolean publicOnly、Boolean noCheck、Boolean&canBeCached、RuntimeMethodHandleInternal&ctor、Boolean&bNeedSecurityCheck) 位于System.RuntimeType.CreateInstanceSlow(布尔publicOnly、布尔skipCheckThis、布尔fillCache) 位于System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly、布尔skipVisibilityChecks、布尔skipCheckThis、布尔fillCache) 位于System.Activator.CreateInstance(类型,布尔非公共) 位于System.Activator.CreateInstance(类型) 位于NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(类型) 位于NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2设置) InnerException:NHibernate.hibernateeException Message=在程序集Oracle.DataAccess中找不到IDbCommand和IDbConnection实现。确保程序集Oracle.DataAccess位于应用程序目录或全局程序集缓存中。如果程序集位于GAC中,请使用应用程序配置文件中的元素指定程序集的全名。 来源=NHibernate 堆栈跟踪: 位于NHibernate.Driver.ReflectionBasedDriver..ctor(字符串驱动程序RassemblyName、字符串连接类型名称、字符串命令类型名称) 在NHibernate.Driver.OracleDataClientDriver..ctor()处
内部异常:

我找到了答案。引用ODP时,必须将引用的copy-local属性设置为true,否则它将找不到要查找的对象

一个障碍下来,我相信会有更多,但我喜欢这些工具


Paul

如果ODP dll的平台与应用程序的平台(x86与x64)不匹配,也可能会出现此问题。将项目更改为根据正确的平台编译。

我错误地单击了它。很抱歉如何删除wiki标志?您不能。您只能删除和重新发布。这没什么大不了的,如果投票率上升,你就不会得到任何声誉分数。