Si j'expose mes objets EF 4 Modèle (entités EF4) en tant que propriétés sur mon ViewModel, est-ce que je "brise" MVVM? Dois-je dupliquer chaque classe Model comme une sorte de DTO et exposer ces DTO à ViewModel? Je comprends la valeur théorique d'avoir la vue "ne sait pas" sur le modèle, mais la réalité est que (si je n'expose pas le modèle à la vue via le ViewModel), je devrais avoir quelques classes qui ont les mêmes propriétés que les classes Model à lier. Ensuite, dans le ViewModel, je devrais gratter les propriétés de ces objets DTO-ish pour mettre à jour les Entités EF appropriées (Modèle).Exposer des entités d'infrastructure en tant que propriétés sur ViewModel pour la liaison de données MVVM
Cela semble être beaucoup de code supplémentaire à écrire et à maintenir. Si j'expose les entités en tant que propriétés sur mon ViewModel (et lie à cela), je peux toujours utiliser les commandes (enregistrement ou suppression) dont le code/logique est défini dans les états ViewModel et enabled/disabled via la liaison aux propriétés ViewModel.
Si vous vous demandez: "Quel est le problème avec avoir à écrire un ou deux DTO pour votre ViewModel?" Vous pensez trop petit.
J'ai une application avec plus de 75 tables SQL (et donc 75+ entités EF4). Je n'ai pas envie d'écrire et de gérer plus de 75 DTO. Maintenant, je pourrais éventuellement utiliser T4 pour générer des DTO pour toutes mes entités et même avoir générer des classes partielles afin que je puisse "personnaliser" ces DTO générés sans perdre les personnalisations si je dois régénérer. Pourtant, j'ai besoin de sentir que ça vaut "la peine" de faire tout ça ... et je ne suis pas encore sûr de ça.
Pensées?
Désolé, mais pensez à reformuler la question. Les trois derniers paragraphes sont essentiellement une diatribe. Sortez-le, concentrez-vous sur vos problèmes/préoccupations actuels - cela vous aidera à fournir une réponse précise. – RPM1984
J'ai particulièrement aimé les trois derniers paragraphes pour faire apparaître ma réponse. il contient des informations importantes. – JanW