-1
我目前正在寻找方法来正确检查我的entitiy框架是否被添加,修改或删除。以下是我的编码:检查实体框架被添加,修改或删除
int state = 0;
var added = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Added).ToList();
var modified = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Modified).ToList();
var deleted = this.ChangeTracker.Entries().Where(e => e.State == EntityState.Deleted).ToList();
if (added.Count > 0)
state = 1;
if (modified.Count > 0)
state = 2;
if (deleted.Count > 0)
state = 3;
目前它正在工作。我只想知道是否有其他适当的方式来做到这一点。
说实话,我从来没有见过这种检查的必要性。如果我怀疑我有未决的更改,则执行SaveChanges()并继续。 你的问题确实让我好奇,是什么让你看到需要。你能详细说明一下吗? 此外,我意识到你的代码可能不是实际的代码,而是一个简化的版本。因此,如果一个条目发生了变化而另一个条目被删除,会发生什么?在你的例子中,状态似乎被覆盖了。我想你有一个更详细的状态跟踪结构? –
@Streamcap您好Streamcap。其实我在做什么是我需要记录我的EF中的变化,并对其进行评论。例如,如果EF添加,评论将是“创建新(某些)”,如果修改它将是“更新(某事)”。现在,只有一个条目可以一次更改。你认为这是正确的吗?谢谢 – Farid
@Farid确实有几种方法可以做到这一点。一种方法(尽管很粗糙)是在插入/更新/删除时写入日志行的数据库中放置触发器。另一种是使用日志框架,以防需要更详细地检测更改。我会建议看看Serilog,它是免费的而且功能强大,不需要额外的工作。 –