我有三個由Entity Framework生成的實體。一種是event
,它包含稱爲frogs
和user_bookings
的導航屬性。我之前發佈了一個相關的問題,關於執行似乎可行的子查詢,但它阻止了我重寫屬性的延遲加載。用LINQ到實體的匿名類型重寫延遲加載
var evts = from evt in context.events.Include("frogs")
where evt.event_id < 10
select evt;
此作品 - 導航屬性frogs
被載入。
然而,當我改變LINQ到這一點:
var evts = from evt in context.events.Include("frogs")
where evt.event_id < 10
select new
{
Event = evt,
HasBooked = evt.user_bookings.Any(x => x.user_id == 1)
};
我在嘗試訪問frogs
因爲ObjectContext中不再存在錯誤。我嘗試從event
類的班級定義中刪除虛擬,但這隻會導致一個空的青蛙列表,當他們肯定存在時!
「因爲ObjectContext不再存在」爲什麼會這樣?當然不是因爲這裏發佈了一些代碼。 – usr
是的,我想我知道信息出現的原因。當我要求顯示它的視圖時,數據正試圖被提取,到時它已被處置。我的問題是我需要做什麼才能讓它在第二個選項的查詢時加載數據?我知道我可以在第一個示例中添加'include',但這對第二個示例不起作用,所以我的猜測是添加'select new'部件時它不在正確的位置。 –