nhibernate一个会话相同的IDB连接
我有一些代码在同一个会话上执行2次session.Get(id)。我可以看到ISession创建了2个IDB连接。我想这是因为某种配置。我希望它在同一个IDB连接上进行提取。如何执行?如果两个nhibernate一个会话相同的IDB连接,nhibernate,isession,idbconnection,Nhibernate,Isession,Idbconnection,我有一些代码在同一个会话上执行2次session.Get(id)。我可以看到ISession创建了2个IDB连接。我想这是因为某种配置。我希望它在同一个IDB连接上进行提取。如何执行?如果两个Get操作在同一事务中,它们将共享相同的IDbConnection。否则,您将以隐式事务结束,NHibernate将为每个查询打开和关闭IDbConnection。通常,您应该尝试执行以下操作: using (var tx = session.BeginTransaction()) { var cu
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();
}
使用(var tx=session.BeginTransaction())
{
var customer=session.Get(123);
var order=session.Get(456);
//做事
tx.Commit();
}
:
当我们没有定义自己的时候
交易,它又回到了
隐式事务模式,其中
数据库的语句以其
自有交易,导致大额
性能成本(数据库运行时间)
构建和分解事务),以及
一致性降低
即使我们只是在读取数据,我们也会
应该使用事务,因为
使用事务可以确保我们得到
来自数据库的一致结果。
NHibernate假设所有访问
数据库是在
交易,并强烈劝阻
未经授权的会话的任何使用
交易
谢谢,迈克尔,这个很好用。但是,如果没有事务,就不可能有长期存在的idbconnections吗?找到它connection.release\u mode=on\u close做我想做的事。