我必须使用自定义odbc驱动程序。
所有我需要传递的连接字符串是DSN。
我如何用(流利的)nhibernate做到这一点? FluentNHibernate.Cfg.Db仅提供带有DSN方法的OdbcConnectionStringBuilder类。我该如何使用它?
答案 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