C# EF changetracker修改的条目引发集合修改错误
我有一个带有EF的Windows桌面应用程序,它使用C# EF changetracker修改的条目引发集合修改错误,c#,asp.net,.net,entity-framework,C#,Asp.net,.net,Entity Framework,我有一个带有EF的Windows桌面应用程序,它使用dbcontext和更改跟踪器。我可以通过迭代集合来修改某些记录以更新datetime和modifiedby userid 虽然它适用于某些条目,但也有一些条目抛出了此错误 System.InvalidOperationException:集合已修改;枚举操作不能执行 下面是我的代码,它编译得很好 var changeSet = this.ChangeTracker.Entries(); foreach (var entry in cha
dbcontext
和更改跟踪器。我可以通过迭代集合来修改某些记录以更新datetime和modifiedby userid
虽然它适用于某些条目,但也有一些条目抛出了此错误
System.InvalidOperationException:集合已修改;枚举操作不能执行
下面是我的代码,它编译得很好
var changeSet = this.ChangeTracker.Entries();
foreach (var entry in changeSet)
{
if (entry.State == EntityState.Added || entry.State == EntityState.Modified)
{
if (entry.Entity is IAuditableEntity entity)
{
entry.Entity.ModifieDate = Now;
entry.Entity.ModifiedById = userId;//guid
}
}
}
// ModifiedById has a foreign key reference to Users table -> id field
// IAuditableEntity has ModifiedById and ModifiedDate fields
我尝试转换到列表,但它抛出了一个无法转换到列表的错误。它适用于“此”环境中的某些模型。仅针对一个模型引发了错误
更新:
将条目复制到列表并更新列表中的对象可以完成此任务,并且不会出现错误。但是我想知道为什么我使用了
this.ChangeTracker.Entries()
for each时,它对少数人有效,而对其他人无效。对不起,这是一个输入错误