Entity Framework DbEntityEntry> '不包含 Where 的定义

本文关键字:包含 Where 定义 Framework DbEntityEntry Entity | 更新日期: 2023-09-27 18:36:55

此代码狙击手来自使用实体框架 5 代码优先将 CreatedDate 添加到实体

        public override int SaveChanges()
    {
        DateTime saveTime = DateTime.Now;
        foreach (var entry in this.ChangeTracker.Entries().Where(e => e.State == System.Data.EntityState.Added))
        {
            if (entry.Property("CreateDate").CurrentValue == null)
                entry.Property("CreateDate").CurrentValue = saveTime;
        }
        return base.SaveChanges();
    }

但是在我的解决方案中,我收到此错误"System.Collection.Generic.IEnumerable'不包含其中的定义......

Entity Framework DbEntityEntry> '不包含 Where 的定义

我希望你错过了using System.Linq

尝试将代码放在另一个方法中,并在 SaveChanges 方法中调用它像这样的东西。在您的保存更改方法写入的正上方

private void MyRule() 
{
  DateTime saveTime = DateTime.Now;
    foreach (var entry in this.ChangeTracker.Entries().Where(e => e.State == System.Data.EntityState.Added))
    {
        if (entry.Property("CreateDate").CurrentValue == null)
            entry.Property("CreateDate").CurrentValue = saveTime;
    }
 }

然后在保存更改中调用它,例如

public override int SaveChanges()
{
 this.MyRule();
 return base.SaveChanges();
}

这应该可以解决问题:)

干杯!