我正在使用 Entity Framework 创建新订单。订单包含联系人的集合,多对多的关系。我想在创建订单时添加对订单上现有联系人的引用。订购和联系实体对象。
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 合并选项加载的对象始终是分离的。”
我知道我可能错过了一个步骤或者没有完全理解 Entity Framework 如何处理多对多关系。
最佳答案
不允许“附加”,因为您尚未保存订单。调用“添加”会告诉 Entity Framework 您要插入新联系人。所以你只剩下一个选择。您需要加载联系人。
以下是最快的方法:
OrderDetails context = new OrderDetails();
Contact contact = context.GetObjectByKey(new EntityKey("OrderDetails.Contact", "contact_id", existingContactId));
order.Contact.Add(contact);
关于entity-framework - 使用 Entity Framework 将现有实体添加到新创建实体的集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407712/