2009-08-05 12 views
5

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?

+0

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

Odpowiedz

0

Nie wiem, czy rozumiem cię poprawnie, ale możesz użyć klasy MembershipUser jako swojego modelu dla użytkowników. jeśli chcesz odwołać użytkownika do swojego modelu "doc", możesz po prostu dodać właściwość "Author" do swojej klasy modelu, a gdy pobierzesz model z DB, możesz również uzyskać tego użytkownika.

klasa Członkostwo zawiera kilka metod statycznych do listy wszystkich użytkowników, dodawać/usuwać użytkowników itd

Powiązane problemy