NHibernate:读取未提交的列
NHibernate: Read uncommited columns
是否可以在将它们写入数据库的同一事务中读取(即 select)列?
我的代码如下所示:
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 总是 returns 空结果集。当我调用 Session.Transaction.Commit() 时,所有行都添加到数据库中,但事务仍未正确传递给 command.Transaction 或者未在那里使用
如果您想读取您在事务中所做的更新,如果您使用的是执行更新的同一会话,那么这些更新应该已经在内存中可供您使用。但是,如果您想通过另一个会话读取未提交的行,您可能必须在事务中使用不同的隔离级别。
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
是否可以在将它们写入数据库的同一事务中读取(即 select)列?
我的代码如下所示:
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 总是 returns 空结果集。当我调用 Session.Transaction.Commit() 时,所有行都添加到数据库中,但事务仍未正确传递给 command.Transaction 或者未在那里使用
如果您想读取您在事务中所做的更新,如果您使用的是执行更新的同一会话,那么这些更新应该已经在内存中可供您使用。但是,如果您想通过另一个会话读取未提交的行,您可能必须在事务中使用不同的隔离级别。
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