无法从NHibernate.Driver.OracleDataClientDriver创建驱动程序
这是引发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 - }
以及对引发exception的代码的调用:
private ISession NHibernateSession { get { return NHibernateSessionManager.GetSession(SessionWrapper.GetUser()); } }
我得到一个TypeInitializationException
{“’Sigaf.Presupuesto.EntidadesDAL.NHibernate.NHibernateSessionManager’的类型初始化程序引发了exception。”}
内在的例外
{“无法从NHibernate.Driver.OracleDataClientDriver创建驱动程序。”}
还有一些内在的例外情况让我想到了一个NRE:
你调用的对象是空的。
在NHibernate.Driver.OracleDataClientDriver..ctor()
NHibernate v3.0 Target Framework v4.0此代码实现适用于其他类似的解决方案。
哦,Hibernate.config文件:
NHibernate.Connection.DriverConnectionProvider NHibernate.Dialect.Oracle10gDialect web NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu NHibernate.Driver.OracleDataClientDriver Sigaf PRE true
确保实际的Oracle驱动程序位于应用程序bin文件夹中。
在Visual Studio中,您应该在项目中添加对Oracle.DataAcess.dll
的引用。
选择DLL =>右键单击它=>在属性网格中选择Copy Local = True。
这应该可以解决您的问题。