2009-02-18 6 views
8

Почти наверняка глупый вопрос, но я не могу найти ответ нигде.Fluent NHibernate - как настроить для оракула?

В Getting Started tutorial база данных SQLite и поэтому его создание завода сессия проводится с использованием класса SQLiteConfiguration в пространстве имен FluentNHibernate.Cfg.Db

Great! Но я не вижу класс конфигурации для использования базы данных Oracle. Как мне это сделать?

Перекрестная размещены на fluent NH mailing list (with answer)

ответ

8

Это работает для меня. Надеюсь это поможет!

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

Да, я думаю, вы используете патч, который был отправлен с тех пор, как я разместил это сообщение –

+0

. Есть ли у вас пример того, что источником данных будет при создании базы данных? –

+0

Это просто нормальный источник данных Oracle. Это должно помочь? http://stackoverflow.com/questions/11400794/oracle-odp-net-connection-string-what-goes-in-data-source – kimsk

3

это поможет ли?

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

Edit: Указанный код использует класс ConnectionStringExpression, который больше не существует в Fluent NHibernate. Однако этот класс не используется ни для чего, кроме хранения поля OracleConfiguration _config. Вы можете безопасно добавить поле в класс OracleConnectionStringExpression и удалить его.

Оставшаяся проблема в том, что NHibernate теперь по какой-то причине ищет компоненты, которые не находятся в текущей сборке Oracle.DataAccess. Если вы хотите иметь дело с этим, вы можете сделать то, что сделал усталыйblogger here.

+0

Я так думаю .... большое спасибо! –

+0

Где он получает CONnectionStringExpression ? –

+0

Кто-то отправил патч, теперь он настраивается с FNH –