ASP.NET MVC: отношения между моделями и MembershipUsers - PullRequest
5 голосов
/ 05 августа 2009

У меня есть модель Docs со столбцом guid author_id, который должен ссылаться на MembershipUser.

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

Я могу легко определить некоторые методы в классе Docs, чтобы получить MembershipUser для Doc и все Docs для 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, но тогда я должен вручную связать каждый документ с его автором.

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

1 Ответ

0 голосов
/ 05 августа 2009

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

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

...