Jest to nieco podobne do tego pytania, ale bardziej ogólne.
Ogólnie rzecz biorąc, czy w przypadku ORM, takich jak EF 4.1 obsługujących POCO, ma sens, aby jednostki domeny były obiektami utrwalonymi w bazie danych?
W przypadku starszych ORM, takich jak EF 4 lub Linq-to-SQL, „obiekty bazy danych” były generowane automatycznie i ściśle powiązane z bazą danych, a zatem w przypadku nietrywialnych aplikacji były mapowane na bardziej niezawodne, inteligentne jednostki domeny, zanim zostały zabrać do pracy.
Czy w nowszych ORM jest pomysł, aby po prostu zbudować solidne jednostki domeny, a następnie mieć warstwę danych, która po prostu zapewnia mapowanie między tymi jednostkami domeny a Twoim DBMS?
Pisząc, mam wrażenie, że zawsze był to cel, ale nie łatwo (łatwo) możliwy z dostępnymi narzędziami, przynajmniej nie w świecie .NET.
źródło
Odpowiedzi:
Myślę, że ogólnym celem ORM jest odwzorowanie bazy danych bezpośrednio na obiekty domeny, które są idealnie POCO. Odpowiedź na twoje pytanie brzmi: tak. Teraz, gdy EF jest w stanie mapować do POCO, idealnie jest rozważyć te POCO jako jednostki domeny. W przypadku innych ORM, takich jak NHibernate, było to możliwe przez pewien czas i uważam, że ludzie używają ich jako takich.
Ale ten cel polegający na bezpośrednim zamapowaniu jednostek domeny na bazę danych nie zawsze jest możliwy do osiągnięcia. W niektórych przypadkach konieczna jest znacząca translacja między bazą danych a modelem domeny. ORM może nie być w stanie wykonać tłumaczenia. W takim przypadku może być potrzebna warstwa pośrednich POCO, które są mapowane za pomocą ORM do bazy danych, a następnie warstwa translacji, która zamienia je w domenowe POCO i z powrotem.
źródło