Używam struktury Entity do utworzenia nowego zamówienia. Zamówienie zawiera kolekcję kontaktów, wiele do wielu relacji. Chcę dodać odniesienie do istniejącego kontaktu w zamówieniu podczas tworzenia zamówienia. Zarówno Zamów, jak i skontaktuj się z obiektami jednostki.Używanie struktury encji do dodawania istniejących obiektów do kolekcji w nowo utworzonym elemencie.
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();
Kiedy przejść do mocowania, to jest wyjątek:
„Attach nie jest ważne działanie, gdy obiekt źródło związane z tym na końcach znajduje się w stanie dodać, usunąć lub indywidualny stan obiekty. ładowane za pomocą opcji NoTracking merge są zawsze odłączone. "
Wiem, że prawdopodobnie brakuje mi kroku lub nie rozumiem w pełni, w jaki sposób struktura podmiotu obsługuje relacje wiele do wielu.
Albo można utworzyć podmiot pośredniczący (klawiszem wiesz) załączyć że do kontekstu (nie zbiórki), a następnie dodać sub do kolekcji . Zobacz Tip 26, aby uzyskać więcej informacji: http://blogs.msdn.com/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx –
Genialny! Tak, co powiedział. –