是否有存在於LINQ的LINQ to SQL中,以實體DataLoadOptions
類的版本?基本上我想有一個地方存儲所有渴望的加載配置,而不必將.Include()
調用添加到我的所有LINQ to Entities查詢中。或者如果有人有更好的解決方案,那麼絕對可以接受。DataLoadOptions等價於LINQ to Entities?
TIA,
班吉
是否有存在於LINQ的LINQ to SQL中,以實體DataLoadOptions
類的版本?基本上我想有一個地方存儲所有渴望的加載配置,而不必將.Include()
調用添加到我的所有LINQ to Entities查詢中。或者如果有人有更好的解決方案,那麼絕對可以接受。DataLoadOptions等價於LINQ to Entities?
TIA,
班吉
個人而言,我很高興,沒有(官方)EF相當於DataLoadOptions
。爲什麼?有幾個原因:
Customer
具有Orders
,我希望Orders
成員代表客戶(懶惰與否)的訂單。在其他地方定義的過濾器(通過AssociateWith
)很容易被遺忘。我會根據需要過濾它們。這導致了最後的異議:DataLoadOptions
以稍後查詢受到影響的方式更改DataContext
的狀態。我更喜歡在需要的時間和地點定義熱切加載。打字很便宜,錯誤很貴。然而,出於完整性的緣故,我要指出,穆罕默德莫薩並投入一些精力在EF version of DataLoadOptions。我從來沒有嘗試過。
我知道你可能希望避免重複的代碼。但是,如果您需要在多個地方進行形狀相同的查詢,那麼您已經重複了代碼,可以使用或不使用「全局」定義的查詢。中央加載配置是僞DRY-ness。很快你會發現自己絆倒了自己的腳,當渴望加載是不希望的,但是,該死的,它的配置發生!
實體框架不會對整個 'ObjectContext的' 支持立即加載設置。但是你可以用partial選項中的include選項聲明所有必需的'IQueryable'屬性。例如:
public IQueryable<Order> Orders {
get {
return OrderSet.Include("OrderDetails");
}
}
FYI的人誰碰到這個發生在谷歌:http://www.governor.co.uk/news-plus-views/2010/2/16/entityframework-include-multiple-extension-method也相當有幫助 – benjy