gpt4 book ai didi

nhibernate - 如何停止 Fluently.Configure 自动连接

转载 作者:行者123 更新时间:2023-12-04 02:15:40 25 4
gpt4 key购买 nike

我怎样才能预留 Fluently.Configure 自动连接到数据库?

下面详细介绍了我们的设置。

我们有以下静态方法来创建 session 工厂:

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,但是,由于我们的 DB 团队的要求,每个用户必须以他们的用户身份打开他/她自己的连接(使用非个性化)- 以允许进程识别,查看谁在 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 时,这些连接将关闭。

我们在 APP 启动时调用 CreateSessionFactory(),然后通过 IOC 传递这个工厂,但此时没有非个性化用户,因此导致应用程序在第一次加载时出错。

我们考虑过使用标准用户来访问诸如首次加载之类的东西,但肯定有更好的方法吗?

最佳答案

您需要禁用自动关键字引用:配置.SetProperty(Environment.Hbm2ddlKeyWords, "none")

有关“防止 NHibernate 在 configuration.BuildSessionFactory() 上连接到数据库”的帖子了解更多详细信息: https://groups.google.com/forum/?fromgroups=#!topic/nhusers/F8IxCgYN038

关于nhibernate - 如何停止 Fluently.Configure 自动连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com