J'ai vraiment du mal à comprendre ce que c'est. Permettez-moi de donner un exemple d'où je me bats. J'utilise Linq-2-Sql comme DAL pour mon application et le modèle IRepository utilisé dans l'exemple d'application MVC Storefront de Rob Conery.Lutte avec DDD, modèle de référentiel et modèles de domaines associés
Dans mon domaine, j'ai un modèle client qui a une collection de modèles d'adresses. Dans mon interface utilisateur, il y a un bouton qui permet à l'utilisateur d'ajouter une nouvelle adresse au client. Cela ouvre un éditeur d'adresses qui leur permet de remplir toutes les informations.
Que se passe-t-il ensuite? L'adresse est-elle enregistrée dans la base de données, puis ajoutée à la liste dans mon objet client? Est-ce que cela vient juste d'être ajouté à la liste mais pas mis à jour jusqu'à ce que l'objet Client soit enregistré? Que faire si l'utilisateur veut supprimer une adresse? Est-ce que je supprime l'adresse de la base de données, puis la supprime de la liste? Ou font-ils simplement tous les suppressions/ajouts qu'ils veulent et je vide tout de la base de données à chaque fois et la mise à jour avec ce qui est dans la collection Customer.Addresses? Quel est le bon flux ici?
Si la collecte d'adresses ne soient mis à jour via le référentiel en appelant quelque chose comme ceci:
public void AddAddressToCustomer(Customer c, Address a)
{
//validate and save address to db
//add the newly saved address to the Customer Object
}
Aide ...
Juste pour que vous sachiez, DDD (Domain Model) et Active Record sont des modèles de conception concurrents. L'enregistrement actif est mappé directement à la base de données et fournit des méthodes CRUD alors que le modèle de domaine n'est pas lié à la base de données et utilise des mappeurs de données pour mapper vers les tables de base de données. –
"Le modèle de domaine ** peut être ** sans rapport avec la base de données" - Evans recommande même de conserver le modèle de domaine le plus près possible du modèle de base de données pour des raisons de simplicité [p160]. –