首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nhibernate one isession相同的idbconnection

nhibernate one isession相同的idbconnection
EN

Stack Overflow用户
提问于 2011-03-12 23:56:08
回答 1查看 605关注 0票数 0

我有一些代码在相同的ISession上做2倍的session.Get(id)。我可以看到ISession创建了2个idbconnection。我猜这是由于某种配置造成的。我希望它在相同的idbconnection上执行fetch。多么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-13 01:06:16

如果两个Get操作在同一个事务中,它们将共享相同的IDbConnection。否则,您将以隐式事务结束,NHibernate将为每个查询打开和关闭一个IDbConnection。通常,您应该尝试执行以下操作:

代码语言:javascript
复制
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

当我们没有定义我们自己的事务时,它会退回到隐式事务模式,在这种模式下,数据库的每条语句都在它自己的事务中运行,从而导致很大的性能成本(数据库构建和拆卸事务的时间),并降低了一致性。

即使我们只读取数据,我们也应该使用事务,因为使用事务可以确保我们从数据库获得一致的结果。NHibernate假定对数据库的所有访问都是在一个事务下完成的,并强烈建议不要在没有事务的情况下使用会话。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5283586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档