1

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

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

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

4

1 回答 1

1

它的效率并不高,基本前提是,如果您想用其他东西(例如无 sql 后端)替换 EF 实现,与直接使用 EF api 相比,您不必更改很多应用程序代码挂断身份上下文。这通常是应该考虑的权衡。

于 2014-04-17T20:33:08.813 回答