7

Desidero utilizzare Entity Framework Code-first per un nuovo progetto. Così ho deciso di fare qualche ricerca e di creare qualche demo in modo che io possa vedere come sta andando. Attraverso, ho un grosso problema o probabilmente qualcosa che non mi è chiaro che coinvolge il modo in cui la mappa del codice dell'entità viene prima mappata alle entità e alla progettazione guidata dal dominio.In che modo le mappature Code-First di Entity Framework riflettono la progettazione basata sul dominio?

Come si costruisce un'applicazione, definiamo le entità di dominio. (definiamo gli aggregati root e creiamo repository per loro a seconda della situazione aziendale da ciò che ho ascoltato)

Va bene, ma il mapping di Entity Framework Code-First sembra funzionare come un modo relazionale tra entità. Quindi, come possono coesistere entrambi?

Per fare un esempio (Pensando a dominio lato driven design):

ufficialecontieneJournalEntycontienecompiti, problemi, note

parole italiche sono entità. In un certo senso, dopo l'analisi, direi che il journal è la radice aggregata del journal aggregato e del journalentry poiché si tratta di una composizione diretta. Ogni attività contiene un valore orario per sapere quante ore sono state impiegate per terminare i compiti, quindi c'è un modo per calcolare le ore totali e anche il salario che ne deriva. La rivista ha la proprietà della tariffa oraria.

Le altre entità sono ciascuna una radice aggregata e potrebbero avere un riferimento al journalentry in modo da sapere dove appartengono compiti, note e problemi.

Ma il problema viene qui .. come la mappatura Code-First di Entity Framework può riflettere questo? Da una visione intuitiva diremmo che il journal contiene una voce di diario e che la voce di diario contiene note, problemi e attività. Ma dal punto di vista DDD probabilmente non è il caso. Correggimi se sbaglio, ma il codice funziona come un database relazionale.

Quindi, come dovremmo mappare l'esempio sopra in code-first?

Grazie mille.

risposta

2


Penso che non sia male se ogni entità di dominio ha una tabella corrispondente nel database. E non significa che sia struttura relazionale come oggetto Journal ha proprietà JournalEntity (nella struttura relazionale journalEntity ha solo JournalID). Inoltre è possibile mappare la gerarchia degli oggetti su una tabella e creare Tipi complessi nelle mappature. Significa che puoi avere scenari di mappatura più complessi della classe per tabella.

Ecco il post del blog ScottGu.

Problemi correlati