【发布时间】:2014-05-23 20:19:04
【问题描述】:
这是我的问题的简化 EF Scenerio:
public partial class MyClass
{
public int ID { get; set; }
public byte Month { get; set; }
public int Year { get; set; }
public DateTime CalculatedDate
{
get
{
return new DateTime(this.Year, this.Month, 1);
}
}
}
我正在使用存储库模式来访问这些对象,它还实现了一个返回 IEnumrable 的 Where(predicate) 方法,就像 LINQ 一样。它是这样使用的:
var myClasses = myClassRepo.Where(mc=> mc.ID > 10);
这很好用,并返回包含所有字段的预期对象,包括 CalculatedDate。 但是,当我尝试将计算字段用作谓词的一部分时,如下所示:
var myClasses = myClassRepo.Where(mc=> mc.CalculatedDate == DateTime.Now);
我收到一个错误:
对象引用未设置为对象的实例。
我知道我可以通过检索第一组结果来“绕过”这个问题,然后通过计算字段对其进行进一步过滤。但我正在尝试了解为什么会发生这种情况以及可以采取哪些措施来解决此问题。
【问题讨论】:
标签: c# linq entity-framework repository-pattern entity-framework-6