2009-02-18 9 views
8

Casi ciertamente una pregunta estúpida pero no puedo encontrar la respuesta en ningún lado.Fluido NHibernate: cómo configurar para Oracle?

En el Getting Started tutorial la base de datos SQLite es por lo que su sesión de creación de la fábrica se hace uso de la clase SQLiteConfiguration en el espacio de nombres FluentNHibernate.Cfg.Db

Gran! Pero no veo una clase de Configuración para usar una base de datos Oracle. ¿Cómo hago esto?

Cruz-publicado en el fluent NH mailing list (with answer)

Respuesta

8

Esto funciona para mí. ¡Espero que esto ayude!

private static ISessionFactory CreateSessionFactory() 
    { 

     var cfg = OracleClientConfiguration.Oracle9 
      .ConnectionString(c => 
       c.Is("DATA SOURCE=<<NAME>>;PERSIST SECURITY INFO=True;USER ID=<<USER_NAME>>;Password=<<PASSWORD>>")); 

     return Fluently.Configure() 
       .Database(cfg) 
       .Mappings(m => m.FluentMappings.AddFromAssemblyOf<CLASS_NAME>().ExportTo(@".\")) 
       .ExposeConfiguration(BuildSchema) 
     .BuildSessionFactory(); 
    } 

    private static void BuildSchema(NHibernate.Cfg.Configuration config) 
    { 
     // this NHibernate tool takes a configuration (with mapping info in) 
     // and exports a database schema from it 
     new SchemaExport(config) 
      .Create(false, true); 
    } 
+0

Sí, creo que está utilizando el parche que se envió desde que publiqué este –

+0

¿Tiene un ejemplo de lo que sería la fuente de datos al crear la base de datos? –

+0

Es solo fuente de datos de Oracle normal. Esto debería ayudar? http://stackoverflow.com/questions/11400794/oracle-odp-net-connection-string-what-goes-in-data-source – kimsk

3

¿Esto le ayuda?

http://tiredblogger.wordpress.com/2008/12/04/persistanceconfiguration-for-oraclefluent-nhibernate/

Editar: El código mencionado utiliza la clase ConnectionStringExpression que ya no existe en Fluido NHibernate. Sin embargo, esa clase no se usa para nada más que para mantener el campo OracleConfiguration _config. Puede agregar de manera segura el campo a la clase OracleConnectionStringExpression y eliminarlo.

El problema restante es que NHibernate buscará por algún motivo componentes que no están en la compilación actual de Oracle.DataAccess. Si quieres lidiar con eso, puedes hacer lo que hizo el cansblogger here.

+0

Creo que sí ... ¡muchas gracias! –

+0

¿Dónde está recibiendo COnnectionStringExpression though? –

+0

Alguien envió un parche, ahora es configurable desde FNH –

Cuestiones relacionadas