最新の ASP.NET Identity を使用するアプリケーションでユーザーのリストを取得したいので、UserManager のインスタンスを使用するこのコントローラーを作成し、独自の組み込みメソッド (ASP.NET Identity 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);
}
これは、Identity コンテキストを作成し、Entity Framework を使用してデータベースに対して同じ SQL を発行するよりも効率的ですか。私にとっては、後者の方が制御しやすく、コードがよりシンプルに見えるため、簡単に実行できるように思えます。