1

最新の 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 を発行するよりも効率的ですか。私にとっては、後者の方が制御しやすく、コードがよりシンプルに見えるため、簡単に実行できるように思えます。

4

1 に答える 1

1

これ以上効率的ではありません。基本的な前提は、EF 実装を別のもの (たとえば、SQL バックエンドなし) に置き換えたい場合、EF API を直接使用する場合と比較して、アプリケーション コードの多くを変更する必要がないということです。 Identity コンテキストからぶら下がっています。これは通常、考慮すべきトレードオフです。

于 2014-04-17T20:33:08.813 に答える