NHibernate - SafeHandle 不能为空
NHibernate - SafeHandle Cannot be Null
我正在使用 NHibernate 连接到 Oracle 数据库。一切都很好,直到我突然开始收到奇怪的 Value cannot be null. Parameter name: SafeHandle cannot be null.
错误。我不确定为了得到这个错误我做了什么改变,我也不知道它到底是什么意思。 Google 也没有给出结果。下面是完整的堆栈跟踪。有什么想法吗?
调用BuildSessionFactory
时出错:
var x = Fluently.Configure()
.Database(OracleClientConfiguration.Oracle10
.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.BuildConfiguration();
return x.BuildSessionFactory();
at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle
pHandle, Boolean& success) at
System.Data.Common.UnsafeNativeMethods.OCIAttrSet(OciHandle trgthndlp,
HTYPE trghndltyp, Byte[] attributep, UInt32 size, ATTR attrtype,
OciHandle errhp) at
System.Data.OracleClient.TracedNativeMethods.OCIAttrSet(OciHandle
trgthndlp, Byte[] attributep, UInt32 size, ATTR attrtype, OciHandle
errhp) at System.Data.OracleClient.OciHandle.SetAttribute(ATTR
attribute, String value, OciErrorHandle errorHandle) at
System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String
userName, String password, String serverName, Boolean
integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName)
at
System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString
connectionOptions) at
System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions
options, Object poolGroupProviderInfo, DbConnectionPool pool,
DbConnection owningObject) at
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection
owningConnection, DbConnectionPool pool, DbConnectionOptions options)
at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection
owningObject) at
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection
owningObject) at
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection
owningObject) at
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection
owningConnection) at
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection
outerConnection, DbConnectionFactory connectionFactory) at
System.Data.OracleClient.OracleConnection.Open() at
NHibernate.Connection.DriverConnectionProvider.GetConnection() at
NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare()
at
NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect
dialect, IConnectionHelper connectionHelper) at
NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory
sessionFactory) at
NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping
mapping, Settings settings, EventListeners listeners) at
NHibernate.Cfg.Configuration.BuildSessionFactory() at
Models.SessionFactory.CreateOracleConnection(String connectionString)
in c:\Users\CMENGU\Projects\TNT\Models\SessionManager.cs:line 21 at
TNT.SessionManager.InitOracleFactory() in
c:\Users\CMENGU\Projects\TNT\TNT\SessionManager.cs:line 29 at
TNT.Program.Main() in c:\Users\CMENGU\Projects\TNT\TNT\Program.cs:line
30 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly,
String[] args) at System.AppDomain.ExecuteAssembly(String
assemblyFile, Evidence assemblySecurity, String[] args) at
Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
preserveSyncCtx) at
System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state, Boolean
preserveSyncCtx) at
System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state) at
System.Threading.ThreadHelper.ThreadStart()
原来是 visual studio 2015 预览版以某种方式弄乱了与 oracle 库相关的内容,导致了此错误。我不得不重新格式化我的电脑几次,直到我明白发生了什么事。
我正在使用 NHibernate 连接到 Oracle 数据库。一切都很好,直到我突然开始收到奇怪的 Value cannot be null. Parameter name: SafeHandle cannot be null.
错误。我不确定为了得到这个错误我做了什么改变,我也不知道它到底是什么意思。 Google 也没有给出结果。下面是完整的堆栈跟踪。有什么想法吗?
调用BuildSessionFactory
时出错:
var x = Fluently.Configure()
.Database(OracleClientConfiguration.Oracle10
.ConnectionString(connectionString))
.Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
.BuildConfiguration();
return x.BuildSessionFactory();
at System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success) at System.Data.Common.UnsafeNativeMethods.OCIAttrSet(OciHandle trgthndlp, HTYPE trghndltyp, Byte[] attributep, UInt32 size, ATTR attrtype, OciHandle errhp) at System.Data.OracleClient.TracedNativeMethods.OCIAttrSet(OciHandle trgthndlp, Byte[] attributep, UInt32 size, ATTR attrtype, OciHandle errhp) at System.Data.OracleClient.OciHandle.SetAttribute(ATTR attribute, String value, OciErrorHandle errorHandle) at System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(String userName, String password, String serverName, Boolean integratedSecurity, Boolean unicode, Boolean omitOracleConnectionName) at System.Data.OracleClient.OracleInternalConnection..ctor(OracleConnectionString connectionOptions) at System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) at System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at System.Data.OracleClient.OracleConnection.Open() at NHibernate.Connection.DriverConnectionProvider.GetConnection() at NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare() at NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(Dialect dialect, IConnectionHelper connectionHelper) at NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory) at NHibernate.Impl.SessionFactoryImpl..ctor(Configuration cfg, IMapping mapping, Settings settings, EventListeners listeners) at NHibernate.Cfg.Configuration.BuildSessionFactory() at Models.SessionFactory.CreateOracleConnection(String connectionString) in c:\Users\CMENGU\Projects\TNT\Models\SessionManager.cs:line 21 at TNT.SessionManager.InitOracleFactory() in c:\Users\CMENGU\Projects\TNT\TNT\SessionManager.cs:line 29 at TNT.Program.Main() in c:\Users\CMENGU\Projects\TNT\TNT\Program.cs:line 30 at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()
原来是 visual studio 2015 预览版以某种方式弄乱了与 oracle 库相关的内容,导致了此错误。我不得不重新格式化我的电脑几次,直到我明白发生了什么事。