我正在netcoreapp3应用程序中使用EF Core。
(我实际上是将DevArt的最新库用于Postgres,但在这里我认为这无关紧要。)
如果我开始交易(在这种情况下可重复阅读):
ack_ids = []
做一些事情,并调用SaveChanges事务已被提交和处置。
我在交易的StateChanged事件上附加了一个事件,以查看调用来自何处。堆栈跟踪显示该调用来自MS EF(不是DevArt):
var pg_conn = this.m_db.GetPGConnection();
pg_conn.Open();
// DevArt override BeginTransaction and allow you to pass in the isolation level
using (var trans = pg_conn.BeginTransaction(this.m_isolation))
{
trans.StateChanged += Trans_StateChanged;
try
{
T result = m_dlg(this.m_db); // This delegate does stuff and calls db.SaveChanges
trans.Commit(); // By the time you get here the transaction has been auto committed and disposed
return result;
}
我不希望交易自动提交。如何预防?肯定要在EF Core中进行一些设置才能阻止这种情况?