bev*_*qua 15 c# oracle connection nhibernate driver
这是引发异常的代码:
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 -
}
Run Code Online (Sandbox Code Playgroud)
以及对引发异常的代码的调用:
private ISession NHibernateSession
{
get
{
return NHibernateSessionManager.GetSession(SessionWrapper.GetUser());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了 TypeInitializationException
{"'Sigaf.Presupuesto.EntidadesDAL.NHibernate.NHibernateSessionManager'的类型初始化程序引发了异常."}
有一个内在的例外
{"无法从NHibernate.Driver.OracleDataClientDriver创建驱动程序."}
还有一些内部异常使我成为一个NRE:
你调用的对象是空的.
在NHibernate.Driver.OracleDataClientDriver..ctor()
NHibernate v3.0 Target Framework 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>
Run Code Online (Sandbox Code Playgroud)
Len*_*rri 35
确保实际的Oracle驱动程序位于应用程序bin文件夹中.
在Visual Studio中,您应该Oracle.DataAcess.dll
在项目中添加引用,例如.
选择DLL =>右键单击它=>在属性网格中选择Copy Local = True.
这应该可以解决您的问题.