我收到错误: LINQ to Entities不支持指定的类型成员'Date'。
我有一个代码,我试图按照其他两个帖子的答案:LINQ to Entities does not recognize the method 'System.TimeSpan Subtract(System.DateTime)' method和Linq To Sql compare Time only
此方法也由许多线程并行执行。
public List<Element> GetResults()
{
List<Element> elements = new List<Element>();
try {
using (DbContext context = new EntitiesContext())
{
DateTime dateTimeNow = DateTime.Now;
TimeSpan timeSpanNow = DateTime.Now.TimeSpan;
elements = context.Elements.
// Some other Includes
//Element has a field System.DateTime DateTime
.Include(_ => _.DateTime)
.Where(o => DbFunctions.TruncateDate(o.DateTime.Date) == dateTimeNow
&& DbFunctions.CreateTime(o.DateTime.Hour, o.DateTime.Minute, o.DateTime.Second) <= timeSpanNow))
.ToList();
}
}
catch(Exception ex)
{
//logging
}
return elements;
}
答案 0 :(得分:1)
首先,据我所知,没有DbFunctions.TruncateDate
这样的东西。我认为这只是一个错字,你的意思是DbFuctions.TruncateTime
。
然后,您正在使用DbFunctions.TruncateTime
,因为EF不了解如何将someDateTime.Date
转换为SQL。通过做
DbFunctions.TruncateDate(o.DateTime.Date)
你仍然使用EF不理解的相同的东西,所以你需要摆脱Date
:
DbFunctions.TruncateDate(o.DateTime)