EF Core 事务更改

问题描述 投票:0回答:2

是否有一个属性表明交易中发生了更改?

我在 Razor 组件内使用事务,当用户即将退出页面时,我想询问他是否要应用或回滚他的更改,但我只想询问是否进行了更改。

类似于

DbContext.ChangeTracker.Entries
,但在 IDbContextTransaction 的上下文中。

感谢您的帮助!

c# entity-framework-core blazor
2个回答
0
投票

实体框架中的更改检测和通知

我建议研究使用

dbContext.ChangeTracker.DetectChanges()
方法。


0
投票

我不知道这是否是一个好的做法,但回答你的问题(可能对其他人有用):

您可以使用

SaveChanges
在多次调用
context.Database.BeginTransaction()
之间创建事务,如下所示:

MyContext context = new MyContext();
using(var transaction = context.Database.BeginTransaction()) {
  
  // Do something with context.
  context.SaveChanges();

  // Do something more with context.
  context.SaveChanges();

  transaction.Commit();
}

您可以使用

context.Database.CurrentTransaction
context.Database.CurrentTransaction.TransactionId
检查您的上下文是否位于事务内。您也可以一起使用
ChangeTracker

我正在使用 EF Core 8,您可以在文档中了解更多信息

© www.soinside.com 2019 - 2024. All rights reserved.