在我的Web API的AccountController中,我可以访问UserManager,它提供了GetUserById()等方法。我需要查询上下文并根据我扩展的属性搜索用户列表 - 我需要添加一个'GetUsersByPhoneNumber()'方法,例如。
AppUser是我的扩展类,它继承了IdentityUser。
我的构造函数看起来像这样。我在网上找到的任何示例都显示了与传入的上下文不同的内容。我无法看到我可以访问dbcontext的位置..
public AccountController()
: this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat)
{
}
public AccountController(UserManager<AppUser> userManager,
ISecureDataFormat<AuthenticationTicket> accessTokenFormat)
{
UserManager = userManager;
AccessTokenFormat = accessTokenFormat;
}
如何根据我添加到AppUser类的额外字段访问dbcontext并执行自己的查询?
答案 0 :(得分:0)
UserManager意味着与商店无关,如果您挂在构建UserManager的UserStore本身上,您可以从DbContext本身下载和访问内容。
由于工厂创建了您的用户管理器,您可能需要将UserManager子类化以公开地公开对默认受保护的IUserStore的访问。拥有商店后,您可以将其投射到UserStore并直接获取DbContext。
另一种可能更干净的方法是扩展UserManager并从UserManager本身公开一个新的GetUsersByPhoneNumber(),因为它已经可以访问你需要的一切