我正在使用实体框架来创建新订单。该订单包含一系列联系人,一个多对多的关系。我想在创建订单时添加对订单上现有联系人的引用。订单和联系实体对象。使用实体框架将现有实体添加到新创建实体上的集合
Order order = new Order();
//set details on order
Contact contact = new Contact();
EntityKey contactKey =
new EntityKey("OrderDetails.Contact",
"contact_id", contact.Key.Id);
contact.EntityKey = contactKey;
contact.contact_id = contact.Key.Id;
order.Contact.Attach(contact); // throws an exception!
OrderDetails ordTable = new OrderDetails();
ordTable.AddToOrder(order);
int result = orgTable.SaveChanges();
当我去重视,这将引发异常:
“附加是不是有效的操作时,与此相关的结束相关的源对象是在添加,删除或脱管状态的对象。使用NoTracking合并选项加载的内容总是被分离。“
我知道我可能错过了一个步骤或没有完全理解实体框架如何处理多对多关系。
或者你可以创建一个存根实体(你知道密钥),附上的上下文(不是集合),然后将子添加到收藏。更多信息,请参阅提示26:http://blogs.msdn.com/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx – 2009-12-16 05:35:05