Przed opublikowaniem tego pytania przeprowadziłem kilka badań. Wśród innych pytań lub postów jedno z nich znajduje się poniżej. Nie mogłem zrozumieć, jak to ustalić ...
Obiekty biznesowe w warstwie dostępu do danych
Mam repozytorium, a warstwy biznesowe wywołują repozytorium w celu pobrania danych. Powiedzmy, że mam następujące klasy dla BLL i DAL:
class BllCustomer
{
public int CustomerId {get; set;}
public String Name {get; set;}
public BllAddress Address {get; set;}
}
class BllAddress
{
public int AddressId {get; set;}
public String Street {get; set;}
public String City {get; set;}
public String ZipCode {get; set; }
}
class DalCustomer
{
public int CustomerId {get; set;}
public String Name {get; set;}
public int AddressID {get; set;}
}
class DalAddress
{
public int AddressId {get; set;}
public String Street {get; set;}
public String City {get; set;}
public String ZipCode {get; set; }
}
Jeśli BLL chce pobrać obiekt Customer, wywołałby GetCustomerById (customerId) w DAL.
Oto moje obawy, których nie mogłem zrozumieć:
Nie widzę, jak ustalić, jaki obiekt powinien zwrócić GetCustomerById w DAL? Czy powinien zwrócić BllCustomer czy DalCustomer?
Gdzie powinno być pobierane (i / lub konwertowane na obiekt biznesowy) adresy powiązane z klientem?
Jeśli DAL zwróci obiekty Dal, wówczas logika pobierania i wypełniania adresu może znajdować się tylko w BLL. Jeśli DAL zwraca obiekty BLL, wówczas logika do pobrania i wypełnienia adresu może znajdować się w BLL lub DAL. Obecnie DAL zwraca obiekty biznesowe, a logika do ich wypełnienia znajduje się w DAL.
Z tego, co czytam, wydaje mi się, że nie ma dobra ani zła. Z linku zamieszczonego powyżej są ludzie, którzy mówią w jedną stronę, a inni mówią w drugą stronę. Ale jak ustalić, który z nich najlepiej pasuje do mojej sprawy?
Każda pomoc będzie mile widziana.