问题描述
|
我必须使用自定义的odbc驱动程序。
我需要通过的连接字符串就是DSN。
我如何用(流畅)休眠方式做到这一点? FluentNHibernate.Cfg.Db仅提供带有DSN方法的OdbcConnectionStringBuilder类。我该如何使用呢?
解决方法
您可以创建派生自
PersistenceConfiguration
的OdbcConfiguration
类。
根据您的数据库,您将不得不在以下类中替换“方言”。
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...
,快速搜索后,没有使用OdbcConnectionStringBuilder找到任何示例代码。流利的NHibernate似乎没有与OdbcConnectionStringBuilder一起使用的对应的“ OdbcConfiguration \”对象。如果您不使用Fluent NHibernate来配置数据库(尽管仍然可以使用Fluent进行所有对象映射),则可以通过hibernate.cfg.xml文件进行配置,请查看使用ODBC提供程序的DB2示例配置。