2011-05-23 70 views
0

我試圖通過外鍵更新EntityFramework 4(與Microsoft SQL Server數據庫)中的外鍵關係。更新EF 4.0中的外鍵關係通過設置Id

我使用.Single()加載對象,然後嘗試設置爲Object.ExampleId(Example表是一個對應於C#中的枚舉的參考表)。然後我在上下文中調用SaveChanges()

這樣做可以在本地使用,但在生產服務器上它失敗並且似乎掛起。使用調試語句我已將範圍縮小到實際設置標識的行。

我能夠通過加載整個示例對象並執行Object.Example = loadedExample而不是Object.ExampleId = exampleId來解決此問題。

我的問題是爲什麼這樣?其他地方,我已經能夠通過設置Id來更新關係。這是一種不好的做法嗎?

+1

不,它是不壞的做法 - 一旦FK暴露你應該使用它們來設置關係。必須有別的東西。在你的開發中。機器使用SQL分析器並檢查分配Id時是否沒有延遲加載。 – 2011-05-23 16:19:07

回答

1

問題原來是設置FK ID導致實體框架加載所有具有該ID的外鍵關係的成員。在我們的舞臺和現場服務器上,這種關係中的項目數量要多得多。

這導致請求超時並失敗。

的解決方案是在這裏:EF4 and undesired loading of related collection with AddObject

+1

您是否找到了解決方案? – 2012-05-16 14:29:40