Che cosa è un buon modo per entità maniglia all'interno di un aggregato che persistono per più database

StackOverflow https://stackoverflow.com/questions/3548267

Domanda

ho a che fare con un problema di progettazione che sono sicuro ha una risposta semplice e / o è stato risolto prima. Ho letto, il pensiero, e la ricerca di soluzioni per un bel po ', ma niente sembra fare davvero un senso.

Il nocciolo della questione è che ho a che fare con una serie di sistemi legacy e database e sto cercando di adottare un approccio DDD alla costruzione di nuove applicazioni e la sostituzione di quelle più vecchie. La questione centrale è che mentre i miei entità del dominio, oggetti di valore, e aggregati fanno senso degli affari, quando considero la persistenza ho un grosso problema ... le entità all'interno di un aggregato sono attualmente persistenti in più database.

Per esempio, diciamo che ho entità A, B, e C dove A è la radice di aggregazione. Ho un repository per A e sto impiegando l'unità di lavoro intorno ad una sessione di NHibernate per la persistenza. Tutto è grande e bene fintanto che A, B, e C sono tutti persistito per un singolo server / database. Nel mio caso, invece, A e B potrebbero essere su un server / database e C potrebbero essere persistito su un server / database di completamente diverso.

mi rendo conto che la saggezza convenzionale potrebbe suggerire che non si dovrebbe mai fare questo, ma ho a che fare con un lascito. Certo, nel tempo io probabilmente refactoring del livello dati a qualcosa di più logico, ma per ora mi sono bloccato. Ho il sospetto che avrò sempre questo problema in una certa misura e non posso fare a meno di pensare che altri hanno attraversato questo ponte.

In breve, ho un quadro homegrown in C # che consiste di Fluent / NHibernate per la persistenza, Unità per CIO e impiegando standard (o almeno riconoscibile) Repository e l'unità di modelli di lavoro. Per quanto riguarda i database, ho a che fare con MS SQL Server e Oracle.

Qualche idea?

È stato utile?

Soluzione

root Complessivo non dovrebbero vivere su più database.

Greg Young parla di questo stesso problema qui .


Qualcosa di come questo è ciò che si dovrebbe fare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top