无法从NHibernate创建驱动程序.驾驶员OracleDataClientDriver

本文关键字:驱动程序 驾驶员 OracleDataClientDriver 创建 NHibernate | 更新日期: 2023-09-27 17:57:41

以下是引发异常的代码:

public static class NHibernateSessionManager
{
    private static ISessionFactory sessionFactory = new Configuration().Configure().BuildSessionFactory();
    public static ISession GetSession(string clientId)
    {
        if (ContextSession == null)
            ContextSession = sessionFactory.OpenSession(new OracleIntercerptor(clientId.ToUpper()));
        else
            ((OracleConnection)ContextSession.Connection).ClientId = clientId;
        return ContextSession;
    }
    // - snip -
}

以及对引发异常的代码的调用:

    private ISession NHibernateSession
    {
        get 
        {
            return NHibernateSessionManager.GetSession(SessionWrapper.GetUser());
        }
    }

我得到一个TypeInitializationException

{"的类型初始值设定项"Sigaf。Presupuesto。EntidadesDAL。NHibernate。NHibernateSessionManager'引发了异常。"}

内部例外

{"无法从创建驱动程序NHibernate。驾驶员OracleDataClientDriver。"}

还有一些内在的例外让我想到了NRE:

对象引用未设置为对象的实例
在NHibernate。驾驶员OracleDataClient驱动程序。。ctor()

NHibernate v3.0目标框架v4.0此代码实现适用于其他类似的解决方案。

哦,Hibernate.config文件:

<?xml version="1.0"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="dialect">NHibernate.Dialect.Oracle10gDialect</property>
    <property name="current_session_context_class">web</property>
    <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
    <property name="connection.driver_class">NHibernate.Driver.OracleDataClientDriver</property>
    <property name="connection.connection_string_name">Sigaf</property>
    <property name="default_schema">PRE</property>
    <property name="show_sql">true</property>
    <mapping assembly="Sigaf.Presupuesto.EntidadesDAL" />
  </session-factory>
</hibernate-configuration>

无法从NHibernate创建驱动程序.驾驶员OracleDataClientDriver

确保实际的Oracle驱动程序在应用程序bin文件夹中。

例如,在Visual Studio中,您应该在项目中添加对Oracle.DataAcess.dll的引用。

选择DLL=>右键单击它=>在"属性"网格中选择"复制本地=True"。

这应该能解决你的问题。