无法创建NHibernate.Driver.OracleDataClientDriver司机 [英] Could not create the driver from NHibernate.Driver.OracleDataClientDriver

查看:1167
本文介绍了无法创建NHibernate.Driver.OracleDataClientDriver司机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是提高异常的代码:

 公共静态类NHibernateSessionManager 
{
私有静态ISessionFactory SessionFactory的=新配置()配置()BuildSessionFactory()。

公共静态的ISession的getSession(字符串的clientId)
{
如果(ContextSession == NULL)
ContextSession = sessionFactory.OpenSession(新OracleIntercerptor(clientId.ToUpper() ));
,否则
((为OracleConnection)ContextSession.Connection).ClientId =的clientId;

返回ContextSession;
}

// - 喀嚓 -
}

和调用,其中引发异常的代码:

 私人的Isession NHibernateSession 
{
得到
{
返回NHibernateSessionManager.GetSession(SessionWrapper.GetUser());
}
}



我收到了 TypeInitializationException




{为
的类型初始值'Sigaf.Presupuesto.EntidadesDAL.NHibernate.NHibernateSessionManager'
引发了异常。}




随着



内部异常< BLOCKQUOTE>

{无法创建
NHibernate.Driver.OracleDataClientDriver驱动程序。}




一些更多的内部异常导致我一个NRE:




对象引用未设置为一个对象的
实例。结果
。在
NHibernate.Driver.OracleDataClientDriver..ctor()




NHibernate的3.0 $ ; b $ b目标框架V4.0
这个代码实现工作等,类似的解决方案



呵呵,Hibernate.config文件:

 <?XML版本=1.0>?; 
<休眠配置的xmlns =金塔:NHibernate的配置,2.2>
<会话工厂>
<属性名=connection.provider> NHibernate.Connection.DriverConnectionProvider< /性>
<属性名=方言> NHibernate.Dialect.Oracle10gDialect< /性>
<属性名=current_session_context_class>网络< /性>
<属性名=proxyfactory.factory_class> NHibernate.ByteCode.LinFu.ProxyFactoryFactory,NHibernate.ByteCode.LinFu< /性>
<属性名=connection.driver_class> NHibernate.Driver.OracleDataClientDriver< /性>
<属性名=connection.connection_string_name> Sigaf< /性>
<属性名=DEFAULT_SCHEMA>&PRE LT; /性>
<属性名=show_sql>真< /性>
<测组件=Sigaf.Presupuesto.EntidadesDAL/>
< /会话工厂>
< /休眠-结构>


解决方案

确认实际的Oracle驱动程序是在应用程序中仓文件夹中。



在Visual Studio中,你应该在你的项目,例如添加到 Oracle.DataAcess.dll 的参考。



选择该DLL =>右键点击=>在属性网格选择复制本地=真。



这应该解决您的问题。


Here's the code raising the exception:

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 -
}

and the call to the code where the exception is raised:

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

I get a TypeInitializationException

{"The type initializer for 'Sigaf.Presupuesto.EntidadesDAL.NHibernate.NHibernateSessionManager' threw an exception."}

With an inner exception of

{"Could not create the driver from NHibernate.Driver.OracleDataClientDriver."}

A few more inner exceptions lead me to a NRE:

Object reference not set to an instance of an object.
at NHibernate.Driver.OracleDataClientDriver..ctor()

NHibernate v3.0 Target Framework v4.0 This code implementation is working for other, similar, solutions.

Oh, the Hibernate.config file:

<?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>

解决方案

Make sure the actual Oracle driver is in your application bin folder.

In Visual Studio you should add a reference to Oracle.DataAcess.dll in your project for example.

Select the DLL => Right click it => In the Properties grid select Copy Local = True.

This should solve your problem.

这篇关于无法创建NHibernate.Driver.OracleDataClientDriver司机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆