3

Lorsque je regarde certaines conceptions d'application pour DDD, je constate que les objets générés à partir de l'infrastructure d'entité ne sont utilisés que pour accéder au magasin de données. Une fois les données chargées, elles sont mappées à un autre objet POCO défini dans le modèle de l'application.Quel est l'avantage d'utiliser un autre modèle avec Entity Framework dans DDD

Est-ce juste un bon design et est fait pour le design? Ou y a-t-il une valeur ajoutée pour redéfinir l'ensemble du modèle d'application et ne pas utiliser les objets générés? Si oui, si vous avez déjà fait des recherches à ce sujet, quels sont les avantages et les inconvénients de l'utilisation d'objets EF dans chaque couche de votre application par rapport à un modèle différent? MVC Storefront est un exemple d'application qui le fait (même s'il utilise LINQ to SQL), mais c'est la même idée.

Merci! :)

Répondre

1

La technique est appelée DTO (Data Transfer Objects) et elle déconnecte totalement les mécanismes d'accès aux données de toutes les autres parties du système. D'après mon expérience, utiliser les objets d'entité (ou mieux, les POCOs dans EF4 qui ont beaucoup des avantages des DTO) est très bien pour des projets petits et peut-être même moyens, mais bien sûr la maintenabilité à long terme est meilleure avec des POCO et/ou des DTO.

2

Séparation des problèmes. POCO vous permet de supprimer toute dépendance sur EF dans votre modèle de domaine. Peu probable mais si vous frappez un mur de briques technique avec EF, il y aura moins d'impact lors du passage à un ORM/DAL différent.

+0

Est-ce le seul avantage, pas de le compromettre, mais je pensais à partir d'un dispositif de conception POV, la façon d'utiliser les dépôts permet une application plus testable? – Hatim

+0

Hatim - Techniquement, vous avez raison et même s'ils vont tous les deux ensemble dans la séparation et donc la testabilité. Le modèle de référentiel est indépendant de POCO. –

+0

Daz, Je viens de donner le modèle de dépôt comme un exemple d'une caractéristique architecturale qui est excellent pour la testabilité. Mais je trouve que c'est un peu trop pour ajouter un modèle entier au cas où la technologie que nous utilisons ne fonctionne pas. semble trop travailler pour rien. – Hatim