实体框架 DbEntityEntry> '不包含 Where 的定义
Posted
技术标签:
【中文标题】实体框架 DbEntityEntry> \'不包含 Where 的定义【英文标题】:Entity Framework DbEntityEntry> 'Does not contain a definition for Where实体框架 DbEntityEntry> '不包含 Where 的定义 【发布时间】:2013-10-26 18:16:13 【问题描述】:此代码狙击来自Adding CreatedDate to an entity using Entity Framework 5 Code First
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 'Does not contain a definition for Where ...
【问题讨论】:
检查您是否有 System.Linq 的 using 语句 你有System.Linq
using 语句?
【参考方案1】:
我期待你失踪using System.Linq
【讨论】:
谢谢大家我错过了 System.Linq 但 VS 无法解决它 试试 Resharper 它是建议和解决使用程序集和组织代码的好工具【参考方案2】:尝试在另一种方法中使用您的代码并在您的 SaveChanges 方法中调用它 像这样的东西。就在你的 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();
这应该可以解决问题:)
干杯!
【讨论】:
以上是关于实体框架 DbEntityEntry> '不包含 Where 的定义的主要内容,如果未能解决你的问题,请参考以下文章
将 SaveChange 中的旧值和新值保存为 DbEntityEntry.Entity 以进行审计
模拟或伪造 DbEntityEntry 或创建新的 DbEntityEntry
将测试替身与 DbEntityEntry 和 DbPropertyEntry 一起使用