我想在我的应用程序中获取使用最新 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 更有效。对我来说,后者似乎更容易做,因为我可以更好地控制并且代码看起来更简单。