5

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

我需要作为连接字符串传递的只是 DSN。

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

4

2 回答 2

9

您可以创建自己的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...
于 2011-04-15T14:03:41.733 回答
1

快速搜索后没有找到任何使用 OdbcConnectionStringBuilder 的示例代码。Fluent NHibernate 似乎没有对应的“OdbcConfiguration”对象与 OdbcConnectionStringBuilder 一起使用。如果您不使用 Fluent NHibernate 来配置数据库(尽管您仍然可以使用 Fluent 进行所有对象映射),您可以通过 hibernate.cfg.xml 文件进行配置,查看使用 ODBC 提供程序的DB2 示例配置

于 2011-04-15T14:01:16.237 回答