11
我的訂單類有:在什麼情況下,我需要外鍵和導航屬性在實體框架
public int CustomerId { get; set; }
public Customer Customer { get; set; }
我真的需要這兩個屬性,使關係工作的?
我沒有使用斷開連接的實體,我正在使用代碼第一種方法。
我的訂單類有:在什麼情況下,我需要外鍵和導航屬性在實體框架
public int CustomerId { get; set; }
public Customer Customer { get; set; }
我真的需要這兩個屬性,使關係工作的?
我沒有使用斷開連接的實體,我正在使用代碼第一種方法。
根據Julia Lerman的書:Programming Entity Framework: DbContext,不同之處在於更新導航屬性的困難。在第85頁中,她建議「如果有一件事情可以讓N-Tier場景中的生活變得更輕鬆,那麼就是爲模型中的關係公開外鍵屬性。」本書包括兩種情況的樣本。
原因是包括外鍵屬性會告訴實體框架使用外鍵關聯,當您需要更新關係時,這比使用所謂的獨立關聯更簡單,即將訂單從一個客戶更改爲另一個在你的例子。使用外鍵關聯,您只需更改CustomerId即可。沒有CustomerId外鍵,您需要更多步驟。獨立關聯使用ObjectStateManager,該對象被解釋爲Code First: Independent associations vs. Foreign key associations? ObjectStateManager非常複雜,甚至沒有從DbContext API公開。
[Code First:Independent associations vs. Foreign key associations?](http://stackoverflow.com/questions/5281974/code-first-independent-associations-vs-foreign-key-associations) – 2013-02-17 10:58:35
@格特我已閱讀你已鏈接的文章。我仍然不知道我是否需要這兩者。當我有實體引用時,我也應該有外鍵...所以它只是重複自己... – Elisabeth 2013-02-17 19:57:34
我認爲這些信息告訴你並不是絕對需要'CustomerId',但是你最好做(儘管取決於你) 。我也想把你和你的問題背後的術語以及討論它的來源聯繫起來。 – 2013-02-17 20:11:58