1

최신 ASP.NET ID를 사용하는 응용 프로그램에서 사용자 목록을 얻고 싶습니다. 그래서 UserManager의 인스턴스를 사용하는이 컨트롤러를 만들고 메서드에 내장 된 메서드 (ASP.NET ID 2)를 쿼리합니다.사용자 목록을 가져올 때 작은 5 테이블 ID 컨텍스트 대신 UserManager를 사용하면 어떤 이점이 있습니까?

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

ID 컨텍스트를 만든 다음 Entity Framework를 사용하여 데이터베이스에 대해 동일한 SQL을 실행하는 것보다 효율적입니다. 나에게 더 많은 것을 제어하고 코드를 더 단순하게 보일수록 후자를하는 것이 더 쉬울 것 같다.

답변

2

더 효율적이지는 않지만, 기본 전제는 EF 구현을 다른 것 (예를 들어 SQL 백엔드가 아닌)으로 대체하려는 경우, 다음과 비교할 때 애플리케이션 코드의 상당 부분을 변경할 필요가 없다는 것입니다. Identity 컨텍스트에 매달려있는 EF API를 직접 사용합니다. 이는 일반적으로 고려해야하는 절충안입니다.