Entity 프레임 워크를 사용하여 새 주문을 만듭니다. 이 주문에는 연락처 모음, 다 대다 관계가 포함됩니다. 주문의 기존 연락처에 대한 참조를 주문에 추가하려고합니다. 엔티티 개체를 주문하고 문의하십시오.
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();
첨부 할 때이 예외가 throw됩니다.
"이 관련 끝과 관련된 원본 개체가 추가, 삭제 또는 분리 상태에있을 때 연결은 유효한 작업이 아니며 NoTracking 병합 옵션을 사용하여로드 된 개체는 항상 분리됩니다."
엔티티 프레임 워크가 다 - 대 - 다 관계를 처리하는 방법을 완전히 이해하지 못하거나 단계가 빠져 있다는 것을 압니다.
아직 주문을 저장하지 않았으므로 "첨부"가 허용되지 않습니다. "추가"를 호출하면 Entity Framework에 새 연락처를 삽입 할 것을 알립니다. 따라서 한 가지 옵션 만 남겨 둡니다. 연락처를로드해야합니다.
가장 빠른 방법은 다음과 같습니다.
OrderDetails context = new OrderDetails();
Contact contact = context.GetObjectByKey(new EntityKey("OrderDetails.Contact", "contact_id", existingContactId));
order.Contact.Add(contact);