İşte küçük bir problem
Değer nesnesine sahip bir varlığa sahip olun. Problem değil. Yeni bir değer nesnesini değiştiririm, sonra nhibernate yeni değeri ekler ve eskisini yetim eder, sonra siler. Tamam, bu bir problem.
Sigortalı, alanımdaki varlığım. Adresleri (değer nesneleri) koleksiyonu var. Adreslerden biri MailingAddress. Posta adresini güncellemek istediğimizde, diyelim ki Bay Evans doktrininden sonra posta kodunun yanlış olduğunu varsayalım, eski nesneyi değiştirilemez olduğu için değiştirmeliyiz (bir değer nesnesi doğru mu?).
Ancak bu satırı silmek istemiyoruz, çünkü bu adresin PK'si bir MailingHistory tablosunda bir FK. Bu yüzden, Bay Evans doktrininin ardından, burada çok sıkıldık. Ben adreslerimi Varlıklar sürece, bu yüzden "değiştirmek" ve sadece eski iyi günler gibi, posta kodu üyesini güncellemek zorunda değilsiniz.
Bu durumda bana ne önerirsiniz? Gördüğüm gibi, ValueObjects yalnızca veritabanı tablosunun sütun grubunu (nhibernate bileşen) kapsüllemek istediğinizde yararlıdır. Veritabanında kalıcılık kimliğine sahip olan her şey, onu bir Varlık (mutlaka bir toplam kök değil) yapmak için daha iyidir, böylece özellikle derin iç içe bir nesne ise, tüm nesne grafiğini yeniden oluşturmadan üyelerini güncelleyebilirsiniz.
Aynı fikirde misiniz? Bay Evans'ın değişebilir bir değer nesnesine sahip olmasına izin veriliyor mu? Veya değişebilir değer nesnesi bir Varlık için aday mıdır?
Teşekkürler