Можно ли использовать (свободно) nhibernate с подключением odbc? - PullRequest
4 голосов
/ 15 апреля 2011

Мне нужно использовать пользовательский драйвер odbc.

Все, что мне нужно передать в качестве строки подключения, - это DSN.

Как мне это сделать (свободно) с nhibernate?FluentNHibernate.Cfg.Db предлагает только класс OdbcConnectionStringBuilder с методом DSN.Как мне это использовать?

Ответы [ 2 ]

8 голосов
/ 15 апреля 2011

Вы можете создать свой собственный класс OdbcConfiguration, производный от PersistenceConfiguration.

В зависимости от вашей базы данных вам придется заменить диалект следующего класса.

public class OdbcConfiguration : 
    PersistenceConfiguration<OdbcConfiguration, 
        FluentNHibernate.Cfg.Db.OdbcConnectionStringBuilder>
{
    protected OdbcConfiguration()
    {
        Driver<NHibernate.Driver.OdbcDriver>();
    }

    public static OdbcConfiguration MyDialect // <-- insert any name here
    {
        get
        {
            // insert the dialect you want to use
            return new OdbcConfiguration().Dialect<NHibernate.Dialect.MyDialect>();
        }
    }
} 

Затем в Fluent NHibernate используйте это OdbcConfiguration:

// replace MyDialect here, too
Fluently.Configure()
    .Database(OdbcConfiguration.MyDialect.ConnectionString("DSN=...;UID=...;PWD=...")
            .Driver<NHibernate.Driver.OdbcDriver>()
            .Dialect<NHibernate.Dialect.MyDialect>() // <-- again, change this
            .etc...
1 голос
/ 15 апреля 2011

Не удалось найти пример кода с помощью OdbcConnectionStringBuilder после быстрого поиска.Похоже, что в Fluent NHibernate нет соответствующего объекта "OdbcConfiguration" для использования с OdbcConnectionStringBuilder.Если вы не используете Fluent NHibernate для настройки базы данных (вы все равно можете использовать Fluent для всех сопоставлений объектов), вы можете выполнить настройку через файл hibernate.cfg.xml, посмотрите пример DB2 config за использование ODBC провайдера.

...