是否可以使用(流畅的)nhibernate与odbc连接?

mrt*_*181 4 nhibernate odbc dsn fluent-nhibernate

我必须使用自定义odbc驱动程序.

我需要传递的所有连接字符串是DSN.

我如何用(流利的)nhibernate做到这一点?FluentNHibernate.Cfg.Db仅提供带有DSN方法的OdbcConnectionStringBuilder类.我该如何使用它?

Flo*_*Lim 8

您可以创建自己的OdbcConfiguration派生类PersistenceConfiguration.

根据您的数据库,您必须替换以下类中的Dialect.

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>();
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)

然后,在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...
Run Code Online (Sandbox Code Playgroud)