VS 2013,EF6代码第一次为什么有时使用.Date和EF工作,但不是其他工作?
我使用这个代码,它工作正常:
var timeslots = Vehicle.VehicleTimeSlots.Where(t =>
t.CreateDate.Date <= currentDate.Date
&& (t.DeleteDate == null || t.DeleteDate.Value.Date > currentDate.Date)
&& t.DayOfWeek == dayOfWeek).OrderBy(t => t.StartTime);
但是,如果我尝试这样做,我得到一个运行时错误“指定的类型成员的日期'在LINQ to Entities中不受支持,只支持初始化器,实体成员和实体导航属性。“ (DB是我的DbContext的一个实例):
var previousReservation = db.ReservationTimeSlots.SingleOrDefault(t =>
t.ReservationDate.Date == reservationTimeslot.ReservationDate.Date
&& t.VehicleTimeSlotId == reservationTimeslot.VehicleTimeSlotId);
有一个关于这个问题许多其他问题,我知道我可以在代码的后位(这我现在所做的使用DbFunctions.TruncateTime() )。我猜想不同之处在于,第一位代码是针对Vehicle实体对象进行操作的,而第二位代码是直接针对DbContext进行操作的。不是他们都是LINQ to Entities吗?
在Entity Framework中添加对此的支持相对容易。 – Aron
“修复”是将'reservationTimeslot.ReservationDate.Date'存储在局部变量中并在查询中使用该局部变量。就“表达”而言,该值将是一个常数。 –
尽管我将“reservationTimeslot.ReservationDate.Date”存储在本地变量中,但我仍然认为't.ReservationDate.Date'仍然存在问题。 – Lex