我有了這個非常基本的表結構:LINQ到實體 - 使用包括預先加載()
dbo.tblCategory
dbo.tblQuestion(多對一關係tblCategory)
dbo.tblAnswer (與tblQuestion多對一的關係)
所以基本上,我想要做的是當我加載一個類別,我也想加載所有的問題和所有的答案。現在
,我已經能夠做到這一點使用下面的代碼:
public tblCategory Retrieve(int id)
{
using (var entities = Context)
{
var dto =
(from t in entities.tblCategory.Include("tblQuestion")
.Include("tblQuestion.tblAnswers")
where t.Id == id
select t).FirstOrDefault();
return entities.DetachObjectGraph(dto);
}
}
}
不過,我不是這個完全迷戀;如果關係名稱在我的模型中更改;構建項目時我不會遇到錯誤。理想情況下,我想使用lambda表達式;像這樣:
public tblCategory Retrieve(int id)
{
using (var entities = Context)
{
var dto =
(from t in entities.tblCategory.Include(t => t.tblQuestion)
where t.Id == id
select t).FirstOrDefault();
return entities.DetachObjectGraph(dto);
}
}
現在,用上面的代碼片段;我被困在如何深入到答案表。任何想法我可以使用這個lambda表達式?
Linq to .NET 4.0中的實體確實支持延遲加載(默認情況下啓用),據我所知。那麼你不需要爲此煩惱。 =) – Jens 2010-07-06 12:11:36
假設我們在4.0。我們目前仍然使用3.5 =) – 2010-07-06 12:14:00
[Entity Framework .Include()with compile time checking?](http://stackoverflow.com/questions/2921119/entity-framework-include-with-編譯時檢查) – 2010-07-06 12:55:26