2009-08-05 3 views
5

У меня есть модель Docs с направляющим столбцом author_id, которая должна ссылаться на MemberhipUser.ASP.NET MVC: отношения между моделями и MembershipUsers

Я использую стандартный MemberhipProvider (я только изменил имя db), и, конечно, у меня нет модели для MembershipUsers.

Я могу легко определить некоторые методы в классах Docs, чтобы получить членство для Doc и всех Документов для MembershipUser, но некоторые вещи сложны (перечисление пользователей, отображение количества документов каждого пользователя); Кроме того, я чувствую, что использую MVC странным образом: мне кажется, что было бы легче, если бы у меня была модель MembershipUsers ...

Как я могу реализовать это соотношение? Должен ли я использовать модель для MembershipUsers?

благодаря

обновление: Я понимаю, что не ясно вообще.

Скажем, я хочу перечислить всех моих пользователей и их документы. Один из способов сделать это:

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 
}; 

Это работает, но генерирует один отдельный запрос для каждого пользователя.

Я мог бы получить массив запросов пользователей, а затем запросить для Документов where author_id IN list_of_guids, но тогда я должен вручную связать каждый документ с его автором.

Что такое лучшее решение?

+0

Вы пытаетесь загрузить все пользователи и все документы? Это звучит как много данных. Почему бы не разделить ваши взгляды на список пользователей, а затем развернуться в списке документов для выбранного пользователя? Как вы указали, если вы хотите сделать это в двух запросах, вам необходимо вручную связать документы с пользователями, используя цикл foreach. – Junto

ответ

0

не уверен, что я правильно вас понимаю, но вы можете использовать класс MembershipUser в качестве модели для пользователей. если вы хотите привязать пользователя к вашей модели «doc», вы можете просто добавить свойство «Автор» к вашему классу модели, а при извлечении модели из БД вы также можете получить пользователя.

класс Membership содержит некоторые статические методы в список всех пользователей, добавлять/удалять пользователей и т.д.

Смежные вопросы