Mon modèle de domaine ressemble à ceci:Comment éviter la logique de persistance dans un modèle de domaine?
class Group
{
private List<Person> persons;
public void AddPerson(Person p) {
persons.Add(p);
DoSideEffect()
}
public List<Person> GetPersons() {...}
}
Maintenant je dois persister il. Par DDD, je ne peux pas ajouter d'attributs de persistance à cette classe, donc les sérialiseurs xml ne fonctionneront pas. BinaryFormatter ne peut pas être utilisé car le format doit être lisible. Je peux appeler manuellement GetPersons() et les persister - mais comment vais-je les recharger? Si j'appelle AddPerson() alors il y a un effet secondaire. L'effet secondaire devrait seulement arriver quand une personne est "vraiment" ajoutée au domaine, pas avec la persistance.
Comment XmlSerializer peut-il fonctionner avec des champs privés? –
@Yaron; ah, non, ça ne peut pas. DataConractSerializer * peut * bien. Comme protobuf-net "v2" si cela ne vous dérange pas binaire. Je sais que ce dernier supporte les modèles sans attributs ('cos je l'ai écrit). –
@Yaron - l'autre approche est une couche DTO dédiée. –