我在與ObjectContext.LoadProperty
(EF 4數據庫優先)難度(無論是字符串和表達重載表現出我相同的行爲)。考慮下面的簡單模式:ObjectContext.LoadProperty不加載相關實體
Product
--------------
ProductId (pk)
...
Order
--------------
OrderId (pk)
...
OrderItem
--------------
OrderId (pk, fk Order),
ItemNumber (pk),
ProductId (fk Product)
...
因爲我發現它在我的特殊情況下有更好的表現比Includes
,我使用LoadProperty
填充相關實體。例如,
Order ord = context.Orders.Where(o => o.OrderId = 1).FirstOrDefault();
context.LoadProperty(ord, o => o.Items); // Items is the navigation property name for the
OrderItem -> Order relationship
foreach(var i in ord.Items)
{
context.LoadProperty(i, oi => oi.Product);
}
這已經存在了一段時間,並已工作(如你所料)就好了。然而,今天上午我們開始遇到這樣一個場景,甚至稱LoadProperty
後,i.Product
仍然無效。 i.ProductId
是有效的,我甚至可以明確地裝載產品,像這樣:
var product = context.Products.Where(p => p.ProductId == i.ProductId).FirstOrDefault();
但LoadProperty
將不會加載的對象。沒有異常拋出,它只是不加載它。我也試過指定MergeOptions.OverwriteChanges
(即使沒有任何),結果已經可以預見相同。
什麼會導致ObjectContext.LoadProperty
以這種方式默默的失敗?
是EF內部固定關係時匹配的密鑰,但它使用了不帶修剪爲區分大小寫字符串比較。 –