Entityler ilişkilendirilir iken ya da Aggreagate ler navigation property tutulmamalı sadece Id ile ilişkilendirmeli deniyor ama ddd implemenet eden clean architecture anlatan yabancı birkaç videoda ki ef core kullanılarak gelştiriliyor. OrderLine entity si içinde (Northwind) Order tipinde navigation property bulunuyor. Diyelim ki sizin de dediğiniz gibi ilişki kurmadık. Master Order tablosuna ait bir bilgiye ihtiyacım olduğunda bunu elde etmenin (ddd ye göre) yolu nedir?
Selamlar. Oradaki OrderLine aggregate root değil, alt entity ve Order aggregate'inin bir parçası. Bu yüzden kendi içlerinde object referansı tutmasının sakıncası yok. Tabii kullandığınız ORM veya veritabanı bunu desteklemeli (ör: MongoDB kullanırsanız JSON serialization'da problem yaşanabilir, ama muhtemelen bir ayarı vardır, çünkü teorik olarak sakıncalı bir durum yok burada). Bu konudan bağımsız olarak bir aggregate içinden başka bir aggregate root'un id'sini tuttuğunuzda ve karşı taraftaki aggregate'e erişmek istediğinizde bunu veritabanından ayrıca getirmelisiniz. Eğer toplu bir liste gibi bir şey çekiyorsanız veritabanı sağlayıcınızın JOIN mantığını kullanabilirsiniz tek seferde çekmek için.
Emeğinize sağlık. Teşekkürler.
Entityler ilişkilendirilir iken ya da Aggreagate ler navigation property tutulmamalı sadece Id ile ilişkilendirmeli deniyor ama ddd implemenet eden clean architecture anlatan yabancı birkaç videoda ki ef core kullanılarak gelştiriliyor. OrderLine entity si içinde (Northwind) Order tipinde navigation property bulunuyor. Diyelim ki sizin de dediğiniz gibi ilişki kurmadık. Master Order tablosuna ait bir bilgiye ihtiyacım olduğunda bunu elde etmenin (ddd ye göre) yolu nedir?
Llşl
Selamlar. Oradaki OrderLine aggregate root değil, alt entity ve Order aggregate'inin bir parçası. Bu yüzden kendi içlerinde object referansı tutmasının sakıncası yok. Tabii kullandığınız ORM veya veritabanı bunu desteklemeli (ör: MongoDB kullanırsanız JSON serialization'da problem yaşanabilir, ama muhtemelen bir ayarı vardır, çünkü teorik olarak sakıncalı bir durum yok burada).
Bu konudan bağımsız olarak bir aggregate içinden başka bir aggregate root'un id'sini tuttuğunuzda ve karşı taraftaki aggregate'e erişmek istediğinizde bunu veritabanından ayrıca getirmelisiniz. Eğer toplu bir liste gibi bir şey çekiyorsanız veritabanı sağlayıcınızın JOIN mantığını kullanabilirsiniz tek seferde çekmek için.
Merhaba, eğitimdeki örnek projeyi indirebileceğimiz link var mıdır ?
github.com/hikalkan/samples/tree/master/DddDemo