如何與Entity Framework創建外鍵關係?

asp.net-mvc entity-framework foreign-key-relationship

我想在我的數據庫中創建一個新行,該表具有幾個外鍵關係,我無法處理需要進行的訂單和調用。這是我到目前為止:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.CustomerReference.Attach( ( from c in db.Customer where c.Id == custId select c ).First() );
db.SaveChanges();

代碼在第二行失敗,說:

當與此相關端關聯的源對象處於添加,刪除或分離狀態時,Attach不是有效操作。使用NoTracking合併選項加載的對象始終是分離的。

有任何想法嗎?

一般承認的答案

(感謝John的語法修正)

所以我明白了。這是你要做的:

db.Models.Order order = DB.Models.Order.CreateOrder( apple );
order.Customer = (from c in db.Customer where c.Id == custId select c).First();
db.SaveChanges();

我希望能幫助別人。


熱門答案

為什麼不使用實體引用?您的方法將導致額外的SELECT語句。

更好的方法是使用CustomerReference類和EntityKey

order.CustomerReference = new System.Data.Objects.DataClasses.EntityReference<Customers>();
order.CustomerReference.EntityKey = new EntityKey("ModelsEntities.Customers", "Id", custId);


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因