如何在aspnet_Users中为用户查询实体框架?

时间:2010-11-09 22:42:38

标签: asp.net linq entity-framework

我已将SqlRoleProvider表aspnet_Users,aspnet_Roles和aspnet_UsersInRoles添加到VS 2008中的Entity Framework 1.0模型中。

Users and roles

我尝试了以下智能感知甚至无法帮助我的事情。

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 个答案:

答案 0 :(得分:2)

Dude,映射会员资格表。

通过Membership Provider API访问它们:

Membership.GetUser("blah");

为什么不映射它?

  • 因为它假定SQL(在EF中取消了“模型”抽象的意义)
  • 如果你能弄清楚数据库中的复杂关系/关联,就开玩笑吧

会员资格API包含您需要的所有信息。

要获取用户的角色,请使用 RoleProvider.GetRolesForUser

答案 1 :(得分:1)

看起来角色被设置为来自用户的导航属性。因此,基于您的代码,您应该能够做到这样的事情:

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();

    }
    //...
}