Как я могу запросить Entity Framework для пользователя в aspnet_Users? - PullRequest
0 голосов
/ 10 ноября 2010

Я добавил таблицы SqlRoleProvider aspnet_Users, aspnet_Roles и aspnet_UsersInRoles в мою модель Entity Framework 1.0 в VS 2008.

Users and roles

Я попробовал следующее, что intellisense мне даже не поможет.

private void BindFormView(string userName)
{
    using (var context = new MyEntities())
    {
        var users = from u in context.aspnet_Users
                    where  u.UserName = userName
                    select u;

    }
    //...
}

Моя конечная цель - получить все роли, которые имеет данный пользователь. В моей модели все выглядит правильно, но я не могу получить к нему эффективный доступ.

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Чувак, не отображать таблицы членства.

Доступ к ним через API поставщика членства:

Membership.GetUser("blah");

Почему бы вам не отобразить это?

  • Поскольку он предполагает SQL (побеждает точку "модельной" абстракции в EF)
  • Шучу, если сможешь выяснить сложные отношения / ассоциации в базе данных

Членский API содержит всю необходимую информацию.

Чтобы получить роли для пользователя, используйте RoleProvider.GetRolesForUser

1 голос
/ 10 ноября 2010

Похоже, что роли настраиваются как свойство навигации от пользователей. Итак, основываясь на своем коде, вы сможете сделать что-то вроде этого:

private void BindFormView(string userName)
{
    using (var context = new MyEntities())
    {
        //Get the first user matching your query
        var user = (from u in context.aspnet_Users
                    where  u.UserName == userName
                    select u).FirstOrDefault();

        //Using the navigation properties, get the roles associated with this user
        var roles = user.aspnet_Roles().ToList();

    }
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...