Asp.net 在获取用户列表时,使用UserManager而不是小的5表标识上下文是否有任何优势?

Asp.net 在获取用户列表时,使用UserManager而不是小的5表标识上下文是否有任何优势?,asp.net,asp.net-mvc,asp.net-web-api,asp.net-mvc-5,asp.net-identity-2,Asp.net,Asp.net Mvc,Asp.net Web Api,Asp.net Mvc 5,Asp.net Identity 2,我想在我的应用程序中获得一个使用最新ASP.NET标识的用户列表,因此我创建了这个控制器,它使用UserManager实例,并使用自己的内置方法(ASP.NET标识2)查询该实例 名称空间WebRole1.WebAPI { 公共类UserProfileController:ApicController { 公共UserProfileController() { } 公共用户档案控制器(ApplicationUserManager用户管理器) { UserManager=UserManager;

我想在我的应用程序中获得一个使用最新ASP.NET标识的用户列表,因此我创建了这个控制器,它使用UserManager实例,并使用自己的内置方法(ASP.NET标识2)查询该实例

名称空间WebRole1.WebAPI
{
公共类UserProfileController:ApicController
{
公共UserProfileController()
{
}
公共用户档案控制器(ApplicationUserManager用户管理器)
{
UserManager=UserManager;
}
私有应用程序用户管理器\u用户管理器;
公共应用程序管理员用户管理器
{
得到
{
返回_userManager??Request.GetOwinContext().GetUserManager();
}
专用设备
{
_userManager=value;
}
}
[HttpGet]
[ActionName(“GetMapData”)]
公共HttpResponseMessage GetMapData()
{
var users=UserManager.users
.Select(u=>new{Id=u.Id,Name=u.UserName})
.ToList();
返回请求.CreateResponse(HttpStatusCode.OK,用户);
}

这是否比我创建一个标识上下文,然后使用实体框架对数据库发出相同的SQL更有效。对我来说,这样做似乎更容易,因为我可以更好地控制,代码看起来也更简单。

这并不是更有效,基本前提是,如果你想与直接使用悬挂在标识上下文之外的EF API相比,如果您希望用其他东西(例如,无sql后端)替换EF实现,则不必对应用程序代码进行太多更改。这通常是应该考虑的权衡

namespace WebRole1.WebAPI
{
    public class UserProfileController : ApiController
    {

        public UserProfileController()
        {
        }
        public UserProfileController(ApplicationUserManager userManager)
        {
            UserManager = userManager;
        }

        private ApplicationUserManager _userManager;
        public ApplicationUserManager UserManager
        {
            get
            {
                return _userManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>();
            }
            private set
            {
                _userManager = value;
            }
        }

        [HttpGet]
        [ActionName("GetMapData")]
        public HttpResponseMessage GetMapData()
        {
            var users = UserManager.Users
                .Select(u => new { Id = u.Id, Name = u.UserName })
                .ToList();
            return Request.CreateResponse(HttpStatusCode.OK, users);
        }