如何防止 Fluently.Configure 自动连接到数据库?
我们的设置详述如下。
我们有以下静态方法来创建会话工厂:
public static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(
IfxOdbcConfiguration
.Informix
.ConnectionString("DSN=ODBCCONNECTION")
.Driver<CompanyCore.Nhibernate.Core.ProfiledODBCClientDriver>()
.Dialect<InformixDialect1000>()
.ShowSql()
)
.Mappings(
m => m.FluentMappings.AddFromAssemblyOf<Task>()
)
.BuildSessionFactory();
}
它与我们的 IOC 设置一起用于创建 SessionFactory,但是,由于我们的数据库团队的要求,每个用户都必须以他们的用户身份打开他/她自己的连接(使用非个人化) - 以允许进程识别,查看谁在 Informix 服务器上运行什么。
要创建我们使用的各个连接:
public static ISession GetMySession(ISessionFactory factory, string user)
{
CompanyCore.Nhibernate.Core.ProfiledODBCClientDriver drv = new Enact.Nhibernate.Core.ProfiledODBCClientDriver();
drv.Configure(new Dictionary<string, string>());
string conn = "DSN=ODBCCONNECTION";
IDbConnection db = drv.CreateConnection();
db.ConnectionString = conn;
db.Open();
return factory.OpenSession(db);
}
这些连接在我们的 UOW 调用 dispose 时关闭。
我们调用CreateSessionFactory()
APP Start,然后通过 IOC 传递这个工厂,但是此时没有非个性化用户,因此在第一次加载时会导致应用程序错误。
我们考虑过使用标准用户来访问诸如首次加载之类的内容,但肯定有更好的方法吗?