2010-06-07 5 views
4

Je cherche un moyen simple de lier une vue à un viewmodel, puis à Entity Framework via la liaison de données.View - ViewModel - Entity Framework 4

Peut-être là-bas me donner quelques indications. Ce que je cherche est une implémentation très simple qui permettrait à la vue de lister automatiquement tout le contenu de par exemple une table de champ unique et pour que les changements dans la vue soient propagés à la base de données via EF. Après avoir passé beaucoup de temps à chercher, je suis toujours à la recherche d'un moyen de le faire et toute aide serait très appréciée.

Merci,

Répondre

3

Techniquement en utilisant un ViewModel signifie que vous ne liez pas réellement à vos entités. Vos classes ViewModel devraient avoir tout ce qui est requis par la vue (et oui, cela peut provoquer ce qui ressemble à la duplication, mais c'est pour le plus grand bien), et donc vous n'avez même pas ce problème.

Vous pouvez atténuer la douleur de la duplication en implémentant quelque chose comme AutoMapper pour éviter le travail de codage «de gauche à droite» dans lequel vous ne faites que copier des propriétés.

Si vous liez une liste, pensez à avoir une EmployeeListViewModel avec une propriété de type IList<EmployeeViewModel>, de sorte que vous ne liez pas encore directement vos entités à la vue. Ceci est utile car vous pouvez réutiliser ce EmployeeViewModel pour une vue de détail à enregistrement unique.

+0

N'utilisez pas AutoMapper pour la projection sur un modèle de vue; il est très inefficace par rapport à LINQ, car il ne supporte pas (dernier j'ai vérifié) 'IQueryable '. Toutefois, AutoMapper fonctionne correctement pour passer de l'autre côté, en passant d'un modèle d'édition à votre couche de données. –