Aquí está el código de lanzar la excepción:No se pudo crear el controlador desde NHibernate.Driver.OracleDataClientDriver
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 -
}
y la llamada al código en el que se produce la excepción:
private ISession NHibernateSession
{
get
{
return NHibernateSessionManager.GetSession(SessionWrapper.GetUser());
}
}
consigo una TypeInitializationException
{ "El tipo inicializador para 'Sigaf.Presupuesto.EntidadesDAL.NHibernate.NHiberna teSessionManager' inició una excepción. "}
Con una excepción interna de
{" No se pudo crear el controlador desde NHibernate.Driver.OracleDataClientDriver. "}
Un algunas excepciones más internas me llevan a un NRE:
Referencia de objeto no s et a una instancia de un objeto.
en NHibernate.Driver.OracleDataClientDriver..ctor()
v4.0 v3.0 NHibernate marco de destino aplicación Este código está trabajando para otros, similares, soluciones.
Oh, el archivo 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>
Lo hice en mi proyecto de acceso a datos, pero no funcionó. Una vez que hice esto en mi proyecto de aplicación (MVC3) funcionó. – Alex
Eso tiene sentido, un proyecto solo traerá ensambles que requiere una referencia para compilar. Para este tipo de referencias, que son referencias de reflexión/solo configuración, deben estar en el proyecto de host. – Rich