问题描述
|
这是引发异常的代码:
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.Driver.OracleDataClientDriver。\“}
其他一些内部异常使我进入了NRE:
对象引用未设置为
对象的实例。
在
NHibernate.Driver.OracleDataClientDriver..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>
解决方法
确保实际的Oracle驱动程序在您的应用程序bin文件夹中。
例如,在Visual Studio中,您应该在项目中添加对“ 4”的引用。
选择DLL =>右键单击它=>在“属性”网格中,选择“复制本地= True”。
这应该可以解决您的问题。