【发布时间】:2010-05-27 16:43:52
【问题描述】:
我有一个名为 Revision 的实体框架 4.0 实体对象,带有可空的 DateEffectiveFrom 和 DateEffectiveTo 日期。我想知道是否有一种基于特定 QueryDate 日期查询对象的 RevisionHistory 的简便方法,而不必使用以下查询结构:
var results = EntityObject.Revisions.Where(x =>
(x.DateEffectiveFrom == null && x.DateEffectiveTo == null) ||
(x.DateEffectiveFrom == null && x.DateEffectiveTo >= QueryDate) ||
(x.DateEffectiveFrom <= QueryDate && x.DateEffectiveTo == null) ||
(x.DateEffectiveFrom <= QueryDate && x.DateEffectiveTo >= QueryDate));
我尝试在 Revision 类中创建以下布尔函数:
partial class Revision
{
public bool IsEffectiveOn(DateTime date)
{
return (x.DateEffectiveFrom == null && x.DateEffectiveTo == null) ||
(x.DateEffectiveFrom == null && x.DateEffectiveTo >= date) ||
(x.DateEffectiveFrom <= date && x.DateEffectiveTo == null) ||
(x.DateEffectiveFrom <= date && x.DateEffectiveTo >= date));
}
...
}
然后将查询更新为:
var results = EntityObject.Revisions.Where(x => x.IsEffectiveOn(QueryDate));
但这显然不能转化为 SQL。任何想法将不胜感激。
【问题讨论】:
标签: .net entity-framework linq-to-entities