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