如何与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合法吗? 是的,了解原因