nhibernate 一个session 相同的idbconnection

发布于 2024-10-21 07:24:18 字数 131 浏览 1 评论 0原文

我有一些代码在同一个 ISession 上执行两次 session.Get(id) 。我可以看到 ISession 创建了 2 个 idbconnections。我想这是因为某种配置。我希望它在同一个 idbconnection 上进行获取。如何?

I have some code doing 2 times session.Get(id) on the same ISession. I can see that the ISession creates 2 idbconnections. I guess this is because of some kind of configuration. I would like it to do the fetch on the same idbconnection. How?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

無心 2024-10-28 07:24:18

如果两个 Get 操作位于同一事务中,则它们将共享相同的 IDbConnection。否则,您最终会得到隐式事务,NHibernate 将为每个查询打开和关闭一个 IDbConnection。一般来说,您应该尝试执行以下操作:

using (var tx = session.BeginTransaction())
{
    var customer = session.Get<Customer>(123);
    var order = session.Get<Order>(456);

    // do stuff

    tx.Commit();
}

不鼓励使用隐式事务

当我们没有定义自己的
交易,它又回到了
隐式事务模式,其中每个
对数据库的语句在其中运行
自己的交易,造成大额
性能成本(数据库时间
建立和拆除交易),以及
降低了一致性。

即使我们只是读取数据,我们
应该使用事务,因为
使用交易确保我们得到
与数据库的结果一致。
NHibernate 假设所有访问
数据库是在a下完成的
交易,并强烈反对
任何未经授权的会话使用
交易。

If both Get operations are in the same transaction, they will share the same IDbConnection. Otherwise you end up with implicit transactions and NHibernate will open and close an IDbConnection for each query. In general, you should try do something like:

using (var tx = session.BeginTransaction())
{
    var customer = session.Get<Customer>(123);
    var order = session.Get<Order>(456);

    // do stuff

    tx.Commit();
}

Use of implicit transactions is discouraged:

When we don't define our own
transactions, it falls back into
implicit transaction mode, where every
statement to the database runs in its
own transaction, resulting in a large
performance cost (database time to
build and tear down transactions), and
reduced consistency.

Even if we are only reading data, we
should use a transaction, because
using transactions ensures that we get
consistent results from the database.
NHibernate assumes that all access to
the database is done under a
transaction, and strongly discourages
any use of the session without a
transaction.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文