Mam model, Dokumenty, z kolumną guid, author_id, która powinna odwoływać się do MembershipUser.ASP.NET MVC: relacja między modelami a użytkownikiem MembershipUsers
Używam standardowego MembershipProvider (zmieniłem tylko nazwę bazy danych) i oczywiście nie mam modelu dla użytkowników Membership.
Mogę łatwo zdefiniować niektóre metody w Dokumentach klasowych, aby uzyskać MembershipUser dla Doca i wszystkich Dokumentów dla MembershipUser, ale niektóre rzeczy są trudne (wymieniając użytkowników, pokazują ile dokumentów ma każdy użytkownik); Ponadto czuję, że używam MVC w dziwny sposób: wydaje mi się, że byłoby łatwiej, gdybym miał model MembershipUsers ...
Jak mogę wdrożyć tę relację? Czy powinienem wdrożyć model dla Członków Użytkowników?
dzięki
aktualizacja: Zdaję sobie sprawę, że nie było jasne, w ogóle.
Powiedz, że chcę wyświetlić listę wszystkich moich użytkowników i ich dokumenty. Jednym ze sposobów, aby to zrobić:
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
};
To działa, ale generuje jedno oddzielne kwerendy dla każdego użytkownika.
Mogłabym otrzymać tablicę identyfikatorów użytkowników, a następnie zapytać o Dokumenty where author_id IN list_of_guids
, ale wtedy powinienem ręcznie powiązać każdy dokument z jego autorem.
Jakie jest lepsze rozwiązanie?
Czy próbujesz załadować wszystkich użytkowników i wszystkie dokumenty? To brzmi jak dużo danych. Dlaczego nie podzielić swoich widoków na listę użytkowników, a następnie przejść do listy dokumentów dla wybranego użytkownika? Jak już zauważyłeś, jeśli chcesz to zrobić w dwóch zapytaniach, musisz ręcznie powiązać dokumenty z użytkownikami za pomocą pętli foreach. – Junto