【问题标题】:How to obtain an NHibernate session with a connection that has an active transaction如何通过具有活动事务的连接获取 NHibernate 会话
【发布时间】:2013-02-01 14:45:19
【问题描述】:

我们使用 NHibernate 作为域模型的 DAL。 在批量处理结束时,我想使用 NHibernate DAL 执行一些操作

类似:

public void BulkUpdate()
{
   var connection =  new sqlConnection(“connectonstring”);
   var transaction = connection.BeginTransaction();
   // Do Bulk Stuff
   var session = SessionFactory.OpenSession(connection);
   var result = session.Query<DomainClass>();
   // Do Stuff with Result
   transaction.Commit();
   connection.Close();     
}

NHibernate 的读取尝试失败,因为它尝试使用没有事务集的命令对象。但我不知道如何将事务对象传递给它。

那里有任何 Nhibernate 大师吗?

【问题讨论】:

    标签: nhibernate transactions


    【解决方案1】:

    我认为这种方法可能有效,但现在没有时间验证它:

    • 首先,从您的连接字符串创建一个 NHibernate 会话,如 in this SO answer 所示
    • 像这样打开事务:session.BeginTransaction()
    • 使用session.Connection 属性执行批量处理
    • 使用session 完成处理并酌情提交

    【讨论】:

    • 你的方法是对的。我使用将事务传播到批量内容的 SQL 命令所需的步骤更新了答案。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多