Mam tabele Customer, CustomerGroups, Groups. Klient ma 1: n w grupach klientów, a grupy 1: n w grupach klientów. Na ekranie tworzenia klienta użytkownik może wybrać informacje o grupach istniejących klientów. Więc kiedy tworzę nowego klienta, odbieram grupy od istniejącego klienta i dodaje je
///
Customer cust = new Customer();
foreach(var item in getothercustomergroups())
cust.groups.add(item);
commit
Ten kod generuje instrukcję aktualizacji iaktualizowanie tabeli grup klientów nowo dodanym klientem, zamiast wstawiania nowych rekordów z nowymi klientami. Z tego względu wszystkie grupy z prev. klient zniknął. Czy ktoś mógłby wyjaśnić to zachowanie.
Odpowiedzi:
0 dla odpowiedzi № 1Z twojego opisu, zgadujęgetcustomergroups dostał grupy klientów od istniejącego klienta przez NHibernate. Jeśli tak, usługa NHibernate powiązała każdy element pętli foreach z istniejącym klientem, więc po dodaniu elementu do nowego klienta nowy klient przejmuje jego własność.
Możesz tego uniknąć, klonując przedmiot. Widzieć Jak skopiować obiekt za pomocą NHibernate