关于成员不支持的实体框架错误

时间:2017-08-19 09:38:20

标签: c# entity-framework linq

我希望两次获得所有记录:

var Check1 = db.WorkingTs
               .Where(x => DbFunctions.TruncateTime(x.WorkingTime).Value.TimeOfDay >= FTime.TimeOfDay 
                        || DbFunctions.TruncateTime(x.WorkingTime).Value.TimeOfDay <= FBtime.TimeOfDay 
                        && x.FlightsCid == Crewstuff.id)
               .FirstOrDefault();

但是我收到以下错误:

  

指定的类型成员&#39;时间&#39; LINQ to Entities不支持。仅支持初始化程序,实体成员和实体导航属性

我也尝试DbFunctions.CreateTime(),但仍会出现同样的错误。

由于

1 个答案:

答案 0 :(得分:1)

首先创建新的DateTime变量。然后在你的查询中使用它。

var fTime = FTime.TimeOfDay;
var bTime = FBtime.TimeOfDay;

var Check1 = db.WorkingTs.Where(x => 
DbFunctions.CreateTime(x.WorkingTime.Hour, x.WorkingTime.Minute, x.WorkingTime.Second) >= fTime  
|| DbFunctions.CreateTime(x.WorkingTime.Hour, x.WorkingTime.Minute, x.WorkingTime.Second) <= bTime 
&& x.FlightsCid == Crewstuff.id).FirstOrDefault();

顺便说一句,您可以使用FirstOrDefault()而不是Where()

var fTime = FTime.TimeOfDay;
var bTime = FBtime.TimeOfDay;

var Check1 = db.WorkingTs.FirstOrDefault(x => 
DbFunctions.CreateTime(x.WorkingTime.Hour, x.WorkingTime.Minute, x.WorkingTime.Second) >= fTime  
|| DbFunctions.CreateTime(x.WorkingTime.Hour, x.WorkingTime.Minute, x.WorkingTime.Second) <= bTime 
&& x.FlightsCid == Crewstuff.id);