2010-07-16 10 views
5

Soy nuevo en NHibernate y Fluido NHibernate y estoy tratando de conseguir la siguiente confguración para que funcione.Fluido NHibernate - Configurar Oracle Data Provider ODP

private static ISessionFactory CreateSessionFactory() 
{ 
    return Fluently.Configure() 
     .Database(
     OracleDataClientConfiguration.Oracle10.ConnectionString("Data Source=mysource;User ID=myid;Password=mypwd;")     
     ) 
     .Mappings(m => 
      m.FluentMappings.AddFromAssemblyOf<Program>()) 
     .BuildSessionFactory(); 

    } 

Tengo el conjunto Oracle.DataAccess al que se hace referencia. Estoy utilizando VS 2010 y .NET 4

consigo la siguiente excepción:

FluentNHibernate.Cfg.FluentConfigurationException fue controlada message = Se ha realizado una configuración incorrecta o incompleta, mientras que la creación de una SessionFactory. Consulte la colección PotentialReasons e InnerException para obtener más detalles.

Fuente = FluentNHibernate StackTrace: en FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() en d: \ Construye \ FluentNH \ src \ FluentNHibernate \ cfg \ FluentConfiguration.cs: línea 98 en HibernateLearning.Program.CreateSessionFactory() en C: \ Projects \ CPS Conceptos de prueba \ Main \ Source \ CPSTestConcepts \ Source \ HibernateLearning \ Program.cs: línea 48 en HibernateLearning.Program.Main (String [] args) en C: \ Projects \ CPS Test Concepts \ Main \ Source \ CPSTestConcepts \ Source \ HibernateLearning \ Program.cs: línea 21 en System.AppDomain._nExecuteAssembly (ensamblado RuntimeAssembly, String [] args) en System.AppDomain.ExecuteAssembly (String assemblyFile, Evidence assemblySecurity, String [] args) en Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() en System.Threading.ThreadHelper.ThreadStart_Context (estado Object) en System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback devolución de llamada, objeto de estado, Boolean ignoreSyncCtx) en System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback de devolución de llamada, el estado del objeto) en System.Threading.ThreadHelper.ThreadStart() InnerException: NHibernate.HibernateException Mensaje = no se pudo crear el controlador desde NHibernate.Driver.OracleDataClientDriver, NHibernate , Versión = 2.1.2.4000, Cultura = neutral, PublicKeyToken = aa95f207798dfdb4. Fuente = NHibernate StackTrace: en NHibernate.Connection.ConnectionProvider.ConfigureDriver (IDictionary 2 settings) at NHibernate.Connection.ConnectionProvider.Configure(IDictionary 2 ajustes) en NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider (IDictionary 2 settings) at NHibernate.Cfg.SettingsFactory.BuildSettings(IDictionary 2 propiedades) en NHibernate.Cfg.Configuration.BuildSettings() en NHibernate.Cfg.Configuration.BuildSessionFactory() en FluentNHibernate.Cfg.FluentConfiguration.BuildSessionFactory() en d: \ Construye \ FluentNH \ src \ FluentNHibernate \ cfg \ FluentConfiguration.cs: línea 93 InnerException: System.Reflection.TargetInvocationException Mensaje = Excepción ha sido lanzada por el objetivo de una invocación. Fuente = mscorlib StackTrace: en System.RuntimeTypeHandle.CreateInstance (tipo RuntimeType, Boolean publicOnly, Boolean NOCHECK, Boolean & canBeCached, RuntimeMethodHandleInternal & ctor, Boolean & bNeedSecurityCheck) en System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean skipCheckThis, boolean FillCache) en System.RuntimeType.CreateInstanceDefaultCtor (booleano publicOnly, boolean skipVisibilityChecks, boolean skipCheckThis, boolean FillCache) en System.Activator.CreateInstance (tipo tipo, boolean no pública) en System.Activator.CreateInstance (tipo tipo) en NHibernate.Bytecode.ActivatorObjectsFactory.Creat eInstance (Tipo de tipo) en NHibernate.Connection.ConnectionProvider.ConfigureDriver (configuración IDictionary`2) InnerException: NHibernate.HibernateException Message = La implementación de IDbCommand y IDbConnection en el ensamblado Oracle.DataAccess no se pudo encontrar. Asegúrese de que el ensamblado Oracle.DataAccess se encuentre en el directorio de la aplicación o en el caché de ensamblaje global. Si el ensamblaje está en el GAC, use un elemento en el archivo de configuración de la aplicación para especificar el nombre completo del ensamblaje. Fuente = NHibernate StackTrace: en NHibernate.Driver.ReflectionBasedDriver..ctor (String driverAssemblyName, Cadena connectionTypeName, Cadena commandTypeName) en NHibernate.Driver.OracleDataClientDriver..ctor() InnerException:

+0

¿Por qué es esto una wiki? – DCookie

+0

Lo hice clic por error. Lo siento. ¿Cómo elimino la bandera wiki? –

+0

No puedes. Solo puedes borrar y volver a publicar. No es un gran problema, simplemente no obtendrás ningún punto de reputación si se sube la apuesta. – DCookie

Respuesta

7

lo he descubierto . Cuando hace referencia al ODP, tiene que configurar la copia de la propiedad local de la referencia en verdadero, de lo contrario no encontrará los objetos que está buscando.

Un obstáculo, estoy seguro de que habrá más, pero estoy amando estas herramientas!

Paul

0

También puede obtener este problema si tiene un desajuste entre las plataformas de la DLL PAO y la plataforma de su aplicación (86 vs 64). Cambia tu proyecto para compilar contra la plataforma correcta.

Cuestiones relacionadas