Đây là một vấn đề nhỏ
Có một thực thể, với một đối tượng giá trị. Không thành vấn đề. Tôi thay thế một đối tượng giá trị cho một đối tượng mới, sau đó nhibernate chèn giá trị mới và mồ côi đối tượng cũ, sau đó xóa nó. Ok, đó là một vấn đề.
Bảo hiểm là thực thể của tôi trong miền của tôi. Anh ta có một bộ sưu tập Địa chỉ (đối tượng giá trị). Một trong những địa chỉ là MailingAddress. Khi chúng tôi muốn cập nhật địa chỉ gửi thư, giả sử mã zip bị sai, theo học thuyết của ông Evans, chúng tôi phải thay thế đối tượng cũ cho một địa chỉ mới vì nó không thay đổi (một đối tượng giá trị phải không?).
Nhưng chúng tôi không muốn xóa hàng này, vì PK của địa chỉ đó là FK trong bảng MailingHistory. Vì vậy, theo học thuyết của ông Evans, chúng tôi gặp khá nhiều khó khăn ở đây. Trừ khi tôi thực hiện địa chỉ của mình Thực thể, vì vậy tôi không phải "thay thế" nó, và chỉ cần cập nhật thành viên mã zip của nó, như những ngày tốt đẹp cũ.
Bạn sẽ đề nghị gì cho tôi trong trường hợp này? Theo cách tôi thấy, ValueObjects chỉ hữu ích khi bạn muốn gói gọn một nhóm các cột của bảng cơ sở dữ liệu (thành phần trong nhibernate). Mọi thứ có id liên tục trong cơ sở dữ liệu, tốt hơn hết là biến nó thành một Thực thể (không nhất thiết phải là một gốc tổng hợp) để bạn có thể cập nhật các thành viên của nó mà không cần tạo lại toàn bộ biểu đồ đối tượng, đặc biệt nếu đó là một đối tượng được lồng sâu.
Bạn có đồng ý không? Được ông Evans cho phép có một đối tượng giá trị có thể thay đổi? Hoặc là một đối tượng giá trị có thể thay đổi là một ứng cử viên cho một Thực thể?
Cảm ơn