代码之家  ›  专栏  ›  技术社区  ›  Cemre Mengü

NHibernate-SafeHandle不能为空

  •  0
  • Cemre Mengü  · 技术社区  · 9 年前

    我正在使用NHibernate连接到Oracle数据库。一切都很好,直到我突然开始感到奇怪 Value cannot be null. Parameter name: SafeHandle cannot be null. 错误我不知道我为了得到这个错误做了什么改变,也不知道它到底意味着什么。谷歌也没有给出结果。下面是完整的堆栈跟踪。有什么想法吗?

    错误发生在 BuildSessionFactory 被称为:

     var x = Fluently.Configure()
            .Database(OracleClientConfiguration.Oracle10
                .ConnectionString(connectionString))
            .Mappings(m => m.FluentMappings.AddFromAssembly(Assembly.GetExecutingAssembly()))
            .BuildConfiguration();
    
        return x.BuildSessionFactory();
    

    位于System.StubHelper.StubHelpers.SafeHandleAddRef(SafeHandle pHandle、布尔值&成功) System.Data.Common.UnsafeNativeMethods.OCIATrSet(OciHandle trgthndlp, HTYPE trghndltyp,Byte[]属性步,UInt32大小,ATTR属性类型, OciHandle errhp)位于 System.Data.OracleClient.TracedNativeMethods.OCIATrSet(OciHandle trgthndlp,Byte[]属性步,UInt32大小,ATTR属性类型,OciHandle errhp)位于System.Data.OracleClient.OciHandle.SetAttribute(ATTR 属性,字符串值,OciErrorHandle errorHandle) System.Data.OracleClient.OracleInternalConnection.OpenOnLocalTransaction(字符串 userName,字符串密码,字符串serverName,布尔值 integratedSecurity、Boolean unicode、Boolean省略OracleConnectionName) 在 System.Data.OracleClient.OracleInternalConnection.ctor(OracleConnectionString connectionOptions)位于 System.Data.OracleClient.OracleConnectionFactory.CreateConnection(DbConnectionOptions 选项,对象池GroupProviderInfo,DbConnectionPool池, DbConnection owningObject)位于 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection、DbConnectionPool池、DbConnectionOptions选项) 位于System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)位于 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)位于 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)位于 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)位于 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)位于 System.Data.OracleClient.OracleConnection.Open()位于 NHibernate.Connection.DriverConnectionProvider.GetConnection()位于 NHibernate.Tool.hbm2ddl.SuppliedConnectionProviderConnectionHelper.Prepare() 在 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.GetReservedWords(方言 方言,IConnectionHelper connectionHelper)位于 NHibernate.Tool.hbm2ddl.SchemaMetadataUpdater.Update(ISessionFactory sessionFactory)位于 NHibernate.Impl.SessionFactoryImpl..ctor(配置cfg,IMapping 映射、设置设置、EventListeners侦听器) NHibernate.Cfg.Configuration.BuildSessionFactory()位于 Models.SessionFactory.CreateOracleConnection(字符串连接字符串) 在c:\Users\CMENGU\Projects\TNT\Models\SessionManager.cs:line 21中 TNT.SessionManager.InitOracleFactory()中 c: \Users\CMENGU\Projects\TNT\TNT\SessionManager.cs:line 29位于 c:\Users\CMENGU\Projects\TNT\TNT\Program.cs:line中的TNT.Program.Main() 30位于System.AppDomain.nExecuteAssembly(RuntimeAssembly程序集, System.AppDomain.ExecuteAssembly(字符串 assemblyFile,证据assemblySecurity,String[]args)位于 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    位于System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔 preserveSyncCtx)位于 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态,布尔 preserveSyncCtx)位于 System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态) System.Threading.ThreadHelper.ThreadStart()

    1 回复  |  直到 9 年前
        1
  •  0
  •   Cemre Mengü    9 年前

    事实证明,正是visual studio 2015预览版在某种程度上搞乱了与oracle库相关的东西,导致了这个错误。我不得不重新格式化我的电脑几次,直到我明白发生了什么。