[英]In NHibernate 4 how can I stop PostgreSQL 9.4 from building up a bunch of 'idle in transaction' connections?
[英]Can I get the underlying conneciton and transaction objects from NHibernate?
是否可以从NHibernate事务中获取DbConnection
和DbTransaction
对象?
我需要将某些NHibernate调用与同一事务中的第三方库结合在一起。
ISession.Connection
返回IDBConnection
对象。 有关交易,请参见下面的博客文章。
//http://ayende.com/blog/1583/i-hate-this-code
private static IDbTransaction GetTransaction(ISession session)
{
using (var command = session.Connection.CreateCommand())
{
session.Transaction.Enlist(command);
return command.Transaction;
}
}
我们可以在NHibernate会话内启动事务,并轻松获得对DbConnection
的访问(甚至可以将其强制转换为SQL或Oracle-如果可以的话) 。 然后使用它进行处理,并应用最终的提交/回滚:
var session = ... // get an NHiberante ISession
var transaction = session.BeginTransaction();
var conn = session.Connection;
var dbConnection = conn as System.Data.Common.DbConnection;
// do the stuff with DbConnection
transaction.Commit();
// or
transaction.Rollback();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.