J'ai un modèle, Docs, avec une colonne guid, author_id, qui doit référencer un MembershipUser. J'utilise le MembershipProvider standard (j'ai seulement changé le nom de la base de données), et bien sûr je n'ai pas de modèle pour MembershipUsers.ASP.NET MVC: relation entre les modèles et MembershipUsers
Je peux facilement définir certaines méthodes dans la classe Docs pour obtenir MembershipUser pour un Doc et tous les Docs pour un MembershipUser, mais certaines choses sont difficiles (énumérer les utilisateurs, montrer combien de documents chaque utilisateur a); de plus, je pense que j'utilise MVC d'une manière étrange: il me semble que ce serait plus facile si j'avais un modèle MembershipUsers ...
Comment puis-je implémenter cette relation? Dois-je implémenter un modèle pour MembershipUsers?
grâce
mise à jour: je me rends compte que je n'étais pas du tout clair.
Dites que je veux lister tous mes utilisateurs et leurs documents. Une façon de le faire est:
ViewModel model = new ViewModel()
{
Users = from MembershipUser user in Membership.GetAllUsers(page, pagesize, out totalusers)
select new UserWithDocs
{
User = user,
Docs = context.Docs.Where(c => c.author_id == (Guid) user.ProviderUserKey)
},
UsersCount = totalusers
};
Cela fonctionne, mais génère une requête distincte pour chaque utilisateur.
Je pourrais obtenir un tableau de guids des utilisateurs et ensuite demander des documents where author_id IN list_of_guids
, mais alors je devrais associer manuellement chaque doc à son auteur.
Quelle est la meilleure solution?
Vous essayez de charger tous les utilisateurs et tous les documents? Cela ressemble à beaucoup de données. Pourquoi ne pas séparer vos vues dans une liste d'utilisateurs, puis explorer une liste de documents pour l'utilisateur sélectionné? Comme vous l'avez souligné, si vous voulez faire cela dans deux requêtes, vous devrez associer manuellement les docs aux utilisateurs en utilisant une boucle foreach. – Junto