[英]DataLoadOptions equivalent for LINQ to Entities?
LINQ to SQL中是否存在LINQ to SQL中存在的DataLoadOptions
類的版本? 基本上我想有一個存儲所有急切加載配置的地方,而不必添加.Include()
調用我所有的LINQ to Entities查詢。 或者如果有人有一個更好的解決方案,那么肯定也會對此開放。
TIA,
班吉
實體框架不支持整個'ObjectContext'的預先加載設置。 但是您可以使用部分類中的include選項聲明所有必需的'IQueryable'屬性。 例如:
public IQueryable<Order> Orders {
get {
return OrderSet.Include("OrderDetails");
}
}
就個人而言,我很高興沒有(官方)EF等價的DataLoadOptions
。 為什么? 原因如下:
Customer
有Orders
,我希望Orders
成員代表該客戶的訂單(懶惰與否)。 在其他地方定義的過濾器(通過AssociateWith
)很容易被遺忘。 我會在需要的時間和地點過濾它們。 這導致了最后的反對意見: DataLoadOptions
以稍后查詢受影響的方式更改DataContext
的狀態。 我更喜歡在需要的地方和時間定義急切加載。 打字很便宜,錯誤很貴。 盡管如此,為了完整起見,我應該提到Muhammad Mosa確實在EF版本的DataLoadOptions中付出了一些努力。 我從來沒有嘗試過。
我意識到你可能想要防止重復的代碼。 但是,如果您在多個地方需要形狀相同的查詢,那么您已經在重復代碼,無論是否包含“全局”定義。 中央急切加載配置是偽DRY-ness。 很快你會發現自己在需要急切加載時絆倒自己的腳,但是,它已經配置好了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.