NHibernate:阅读未经注册的专栏

时间:2015-03-10 11:10:17

标签: c# sql nhibernate

是否可以读取(即选择)同一事务中的列,并将它们写入数据库?

我的代码如下所示:

using (IGenericTransaction trans = m_GenericSession.BeginTransaction())
{
    //persist a column to table tExample with Id = 1

    WriteSubItems();
    trans.Commit();
}

public void WriteSubItems()
{
    IDbTransaction trans = GetTransaction();
    //SELECT column from tExample with Id = 1 
}

其中WriteSubItems执行一些逻辑,该逻辑基于读取之前在事务中写入的列。

我试过了:

 public IDbTransaction GetTransaction()
    {
        IDbCommand cmd = Session.Connection.CreateCommand())
        cmd .Connection = Session.Connection;
        Session.Transaction.Enlist(cmd );

        return command.Transaction;            
    }

但没有成功。尝试读取tExample始终返回空结果集。当我调用Session.Transaction.Commit()时,所有行都被添加到db中,但仍然没有将事务正确传递给command.Transaction或者它没有在那里使用

1 个答案:

答案 0 :(得分:1)

如果您想要读取在事务中所做的更新,那么如果您正在使用执行更新的同一会话,则这些更新应该已在内存中可用。但是,如果您想通过另一个会话读取未提交的行,则可能必须在事务中使用不同的隔离级别。

ITransaction transaction = session.BeginTransaction(System.Data.IsolationLevel.<insert correct isolation level here>);

在此处阅读有关隔离级别的更多信息: https://msdn.microsoft.com/en-us/library/system.data.isolationlevel%28v=vs.110%29.aspx