Istnieje kilka problemów leżących u podstaw tego podejścia (IMO):
EF, jak każdy inny ORM, wpada do utrwalania niepokoju. W związku z tym nie powinno to wpływać na sposób struktury twojego modelu domeny. Fakt, że wszystkie twoje istoty trwają w czymś, co brzmi jak jeden magazyn trwałości, może świadczyć o tym, że twoje ograniczone konteksty zachodzą na siebie lub nie istnieją.
Próba przeniesienia się do lepszej struktury nie jest zła :) --- jednak, jak oświadczył Mark Oreta, prawdopodobnie nie zawracałbym sobie głowy strukturą EF.
Podstawowym problemem, z którym się Państwo spotykają, jest próba odczytania z modelu domeny. Wydaje się, że pojawia się to zbyt często w systemach i utrudnia to. Leniwe ładowanie jest bezpośrednim wynikiem tego właśnie. Kiedy czytasz, najlepiej użyj warstwy zapytania z dostępem do magazynu zapytań (może to być ta sama baza danych), która jest zoptymalizowana do czytania. W twoim przykładzie potrzebujesz denormalizowanej nazwy klienta w swojej domenie sprzedaży. W porządku. Próbowanie tego, czytając model domeny, a następnie próbując pobrać dane z modelu domeny w innym ograniczonym kontekście, jest przyczyną bólu.
Jeśli przejdziesz przez dzielenie danych, musisz zachować podział.
Chociaż dane z różnych BC mogą znajdować się w tym samym sklepie, powinieneś pomyśleć o swoich danych tak, jakby każdy BC miał swoją własną bazę danych. Czasami mam pojedynczy projekt z różnymi problemami (warstwy dla niektórych) w różnych folderach/przestrzeni nazw (tutaj .NET). Powinno być możliwe rozdzielenie tych obaw na oddzielne zgromadzenia na podstawie kaprysu. Więc nie powinny być zbyt ściśle powiązane. To samo dotyczy tej struktury danych, którą próbujesz podzielić. Powinieneś zasadniczo móc podzielić odpowiednie dane BC na osobną bazę danych. Mechanizmy uzyskiwania danych przez BC są czymś innym i sądzę, że jeśli nie można tego zająć, może się okazać, że jest ciężko.
Chociaż nie sądzę, że identyfikacja BC od strony danych może być najlepszy pomysł to z pewnością krok w dobrym kierunku :)
Tak więc mówisz, że nie ma znaczenia, czy dodaję klienta do mojego BC sprzedaży, ponieważ jest dobry traktować każdy BC jako osobny magazyn danych? –
Ponadto, gdy mówisz, że potrzebuję denormalizowanej nazwy klienta w mojej domenie sprzedażowej, czy chcesz dodać kolejną kolumnę CustomerName w mojej tablicy sprzedaży? Czy masz na myśli potrzebę dodania cały stół klienta w mojej sprzedaży edmx (BC)? –
Chodzi o to, że jeśli dodasz klienta do swojej domeny sprzedaży, stanie się on VO, ponieważ dostarcza dane (tylko widok) i nie będziesz z nim w ogóle wchodził. Może domena 'Klient' w sprzedaży ma tylko ID i FullName, ale nie" ciągnij "w podmiocie Klienta w domenie sprzedaży. d wybierz denormalizowaną nazwę klienta w swojej domenie sprzedaży. Oczywiście wszystko zależy od kontekstu :) –