Per rispondere a # 1 - quando si separa il modello di dominio dal modello di persistenza, il rilevamento delle modifiche non è un problema. La ragione è che il rilevamento delle modifiche è più una preoccupazione trasversale rispetto a un problema relativo al dominio. La preoccupazione di un modello di dominio non è quella di garantire che le modifiche a se stesso siano tracciate.
Le modifiche che vogliamo monitorare sono in genere quelle che persistono anche noi. IOW, se, nel corso di qualche elaborazione, cambiamo un valore di proprietà e poi lo cambiamo, non ci sono cambiamenti da persistere, il che significa che non ci sono cambiamenti da tracciare. Quindi mi piacerei per il rilevamento delle modifiche come comportamento della persistenza, non del dominio.
A cura:
Ecco una nota di Patters, Principles e Practices of Domain-Driven Design :
Don't put dirty flags on domain objects
It might be tempting to put a flag on a domain object to signify that it has changed. The problem with this is that you are clouding the domain model with persistence concerns. Leave all change tracking to the unit of work and the repository.
Per # 2 - Non ho un esempio open source. Ma per cominciare, la separazione tra modelli di dominio e modelli di persistenza significa assicurare che la persistenza sia astratta, magari usando il modello del repository.
Se i modelli di dominio dipendono da un'astrazione del repository "persistente ignorante", come
public interface IRepository<T> where T : class
{
void Add(T item);
void Update(T item);
void Delete(T item);
void Get(RecordId id);
}
Quindi l'implementazione di quel repository può mappare quel T
ae da qualsiasi modello specifico della persistenza e il dominio non saprà mai che il modello di persistenza esiste.
Affinché ciò avvenga, il dominio deve definire la propria interfaccia di repository anziché iniettarne una definita in una libreria di persistenza. Ciò lascia il dominio della persistenza del dominio agnostico e più semplice da testare e solo le implementazioni di quel repository sono a conoscenza dei dettagli della persistenza.