如何停止EF Core DbContext.SaveChanges自动提交事务?

时间:2019-12-05 17:18:49

标签: entity-framework-core devart

我正在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中进行一些设置才能阻止这种情况?

0 个答案:

没有答案