2

在Web API的AccountController中,我可以訪問UserManager,它提供了像GetUserById()這樣的方法。我需要查詢上下文並根據我已經擴展的屬性搜索用戶列表 - 例如,我需要添加一個'GetUsersByPhoneNumber()'方法。Web API擴展IdentityUser和自定義查詢

AppUser是我的擴展類,它繼承了IdentityUser。

我的構造函數看起來像這樣。我在網絡上找到的任何實例顯示了一些與上下文中傳遞的不同。我看不到,我可以訪問的DbContext ..

public AccountController() 
     : this(Startup.UserManagerFactory(), Startup.OAuthOptions.AccessTokenFormat) 
    { 
    } 

    public AccountController(UserManager<AppUser> userManager, 
     ISecureDataFormat<AuthenticationTicket> accessTokenFormat) 
    { 
     UserManager = userManager; 
     AccessTokenFormat = accessTokenFormat; 
    } 

我如何才能訪問到的DbContext和執行基於我自己的查詢額外的領域,我已經添加到AppUser類?

回答

0

UserManager意味着對商店不可知,如果掛在用戶管理器構建的UserStore本身上,則可以下拉並訪問DbContext本身。

由於工廠創建了用戶管理器,因此您可能需要繼承UserManager的子類以公開訪問默認保護的IUserStore。一旦你有了商店,你可以將它轉換爲UserStore並直接獲取DbContext。

另一種可能是更清潔的方式做同樣的事情將是從自身的UserManager的UserManager延伸並露出新GetUsersByPhoneNumber(),因爲它已經訪問了你需要的一切