繁体   English   中英

我可以从NHibernate获取基础连接和事务对象吗?

[英]Can I get the underlying conneciton and transaction objects from NHibernate?

是否可以从NHibernate事务中获取DbConnectionDbTransaction对象?

我需要将某些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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM