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

时间:2011-04-15 12:35:54

标签: nhibernate fluent-nhibernate odbc dsn

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

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

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

2 个答案:

答案 0 :(得分: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>();
        }
    }
} 

然后,在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 :(得分:1)

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