【问题标题】:Entity Framework error about member no supported [duplicate]关于成员的实体框架错误不支持[重复]
【发布时间】:2017-08-19 09:38:20
【问题描述】:

我想获取两次之间的所有记录:

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();

但我收到以下错误:

LINQ to Entities 不支持指定的类型成员“时间”。仅支持初始化器、实体成员和实体导航属性

我也试过DbFunctions.CreateTime(),但还是出现同样的错误。

谢谢

【问题讨论】:

    标签: c# entity-framework linq


    【解决方案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);
    

    【讨论】:

    • 你还是不行.Value.TimeOfDay
    • 刚刚编辑了答案。这应该工作
    • 非常感谢@IlyaCosmosTaraskin 工作!!
    猜你喜欢
    • 1970-01-01
    • 2019-02-09
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多