1

J'ai récemment remaniée avec ma demande ce qui suit: LINQ to SQL db connexion objets pour envelopper le LINQ aux classes sql cartographes à la carte et-vient entre les objets et LINQ to Sql entitys couche de service pour appeler le référentiel, remettre des objets à l'interface utilisateur. Avant, je ne faisais qu'utiliser des objets Linq to SQL dans mon interface utilisateur (je sais). Mais lors de l'affichage des relations, c'était si facile. Par exemple:MVC 2 Application avec une base de données relationnelle et des wrappers d'objets - comment obtenir des données relationnelles dans des vues?

J'ai une capacité appelée SchoolProfile, et une table appelée School. Un utilisateur a un SchoolProfile (avec GPA, Rank, etc.), qui lie à une école. La fonctionnalité d'ajout de l'école était facile - parce qu'elle n'a pas de clé étrangère.

Lors de la création d'un formulaire pour un utilisateur pour répertorier tous les SchoolProfiles - ils ne veulent pas voir un SchoolId. Avant, à mon avis, ce serait simplement schoolprofile.School.Name. Maintenant, un ShoolProfile est un objet "plat" dans mon ViewData sans propriétés. Je suppose que je pourrais créer d'autres classes pour obtenir les données relatives (nom de l'école, etc.) mais cela semble désordonné. Aucune suggestion?

Répondre

1

Ma suggestion est de regarder ViewModels et AutoMapper. Fondamentalement, vous allez créer un ViewModel spécifique pour votre View et vous pouvez inclure SchoolName en tant que propriété de ce ViewModel. Ensuite, vous pouvez utiliser AutoMapper pour mapper facilement votre modèle de domaine (formulaire Linq vers Sql) à votre ViewModel. Fondamentalement, vous voulez que votre vue obtienne toutes les informations dont elle a besoin à partir de ViewModel. Concevez votre ViewModel en fonction de toutes les informations que vous devez afficher. Tout ce qu'il doit faire est de prendre ce qui est dans le ViewModel et de le cracher.

+0

C'est très intéressant - j'aime les fonctionnalités d'AutoMapper. En ce moment, je ne veux pas ralentir mon application avec des outils de 3ème partie (c'est toujours assez simple) - mais en lisant la documentation et en regardant une partie de la vidéo, cela m'a donné une idée. Je vais juste créer des propriétés pour mes objets qui ne sont pas liés à quelque chose dans la classe linq to sql directement. Puis les mapper avec mes mappeurs en utilisant les accesseurs de propriété linq to sql. Merci! – Jack

Questions connexes