Oto mały problem
Posiadaj obiekt z obiektem wartości. Żaden problem. Zamieniam obiekt wartości na nowy, a następnie nhibernate wstawia nową wartość i osierocam starą, a następnie usuwa ją. Ok, to jest problem.
Ubezpieczony jest moją jednostką w mojej domenie. Ma zbiór adresów (obiekty wartości). Jednym z adresów jest MailingAddress. Kiedy chcemy zaktualizować adres pocztowy, powiedzmy, że kod pocztowy był nieprawidłowy, zgodnie z doktryną pana Evansa, musimy zastąpić stary obiekt nowym, ponieważ jest niezmienny (obiekt wartości prawda?).
Ale nie chcemy usuwać tego wiersza, ponieważ PK tego adresu to FK w tabeli MailingHistory. Tak więc, postępując zgodnie z doktryną pana Evansa, jesteśmy tutaj w dużym stopniu popieprzeni. Chyba, że utworzę moje Adresy, więc nie muszę go „zastępować” i po prostu aktualizować członka kodu pocztowego, jak za starych dobrych czasów.
Co byś mi zasugerował w tej sprawie? Z mojego punktu widzenia ValueObjects są użyteczne tylko wtedy, gdy chcesz obudować grupę kolumn tabeli bazy danych (komponent w nhibernate). Wszystko, co ma identyfikator trwałości w bazie danych, lepiej jest uczynić z niego Entity (niekoniecznie zagregowany katalog główny), abyś mógł aktualizować jego elementy bez odtwarzania całego wykresu obiektów, szczególnie jeśli jest to obiekt głęboko zagnieżdżony.
Zgadzasz się? Czy Mr. Evans może mieć obiekt o zmiennej wartości? A może obiekt o zmiennej wartości jest kandydatem na byt?
Dzięki