我是NHibernate和Fluent 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();
}
我已经引用了Oracle.DataAccess程序集。我正在使用VS 2010和.Net 4。
我遇到了以下异常:
未处理的FluentNHibernate.Cfg.FluentConfigurationException 消息=在创建SessionFactory时使用了无效或不完整的配置。检查PotentialReasons集合和InnerException以获取更多详细信息。
来源=FluentNHibernate 堆栈跟踪: 在d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs的FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()行98 在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(String[] args)行21 在System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 在System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 在Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在System.Threading.ThreadHelper.ThreadStart_Context(Object state) 在System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 在System.Threading.ThreadHelper.ThreadStart() 内部异常:NHibernate.HibernateException 消息=无法从NHibernate.Driver.OracleDataClientDriver、NHibernate、Version=2.1.2.4000、Culture=neutral、PublicKeyToken=aa95f207798dfdb4创建驱动程序。 来源=NHibernate 堆栈跟踪: 在NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) 在NHibernate.Connection.ConnectionProvider.Configure(IDictionary`2 settings) 在NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(IDictionary`2 settings) 在NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary`2 properties) 在NHibernate.Cfg.Configuration.BuildSettings() 在NHibernate.Cfg.Configuration.BuildSessionFactory() 在d:\Builds\FluentNH\src\FluentNHibernate\Cfg\FluentConfiguration.cs的FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory()行93 内部异常:System.Reflection.TargetInvocationException 消息=已在调用目标上引发异常。 来源=mscorlib 堆栈跟踪: 在System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 在System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) 在System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) 在System.Activator.CreateInstance(Type type, Boolean nonPublic) 在System.Activator.CreateInstance(Type type) 在NHibernate.Bytecode.ActivatorObjectsFactory.CreateInstance(Type type) 在NHibernate.Connection.ConnectionProvider.ConfigureDriver(IDictionary`2 settings) 内部异常:NHibernate.HibernateException 消息=无法找到程序集Oracle.DataAccess中的IDbCommand和IDbConnection实现。确保程序集Oracle.DataAccess位于应用程序目录或全局程序集缓存中。如果程序集在GAC中,请使用<assemblyBinding>元素在应用程序配置文件中指定程序集的完整名称。 来源=NHibernate 堆栈跟踪: 在NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, String connectionTypeName, String commandTypeName) 在NHibernate.Driver.OracleDataClientDriver..ctor() 内部异常: