Asp.Net Identity - 自定义数据库访问UserManager

时间:2017-02-07 15:54:23

标签: c# asp.net asp.net-identity

是否可以扩展UserStore / UserManager以访问覆盖方法中的自定义表(不创建另一个dbcontext)?

我正在处理与Identity集成的遗留数据库。最近,我们将一个新表Clients添加到与Users表具有一对一关系的数据库中。想要做的是覆盖UserManager类中的FindAsync方法来调用基本方法,获取用户,然后根据存储在表中的用户客户端ID,获取客户端名称并将其插入到用户模型。

以下是我的尝试;但是,对我来说,我认为这是错误的做法,并希望就如何正确应用我想做的事情提出一些建议。

public override async Task<ApplicationUser> FindAsync(string userName, string password)
{
    ApplicationUser user = await base.FindAsync(userName, password);

    if (user != null && user.ClientID != null)
    {
        using (var ctx = new ApplicationDbContext(HostPage.ConnectionString))
        {
            user.Client = ctx.Clients.Where(p => p.ClientID == user.ClientID).FirstOrDefault();
        }
    }

    return user;
}

1 个答案:

答案 0 :(得分:0)

您可以修改base.FindAsync()中的SQL以对表执行加入,从而执行单个查询。