【问题标题】:How can I get the full object of currently logged ApplicationUser (EF6)如何获取当前记录的 ApplicationUser (EF6) 的完整对象
【发布时间】:2020-11-22 01:15:51
【问题描述】:

我为此搜索了一个解决方案,但我发现的那个似乎不起作用或很旧。

我有一个包含列表的用户对象,但是当我尝试使用 UserManager 获取它以添加内容时

var userAux = UserManager.FindById(User.Identity.GetUserId());

它会返回 null 列表中的属性。

我还假设 db.Savechanges () 也不起作用,所以如果有人知道如何进行修改,如果你告诉我如何进行,我将不胜感激。

【问题讨论】:

    标签: c# asp.net-mvc entity-framework entity-framework-6 asp.net-identity


    【解决方案1】:

    了解如何操作。我错过了一个 using,而 VS 又给我抛出了另一个随机错误。

    using System.Data.Entity; <<==Important
    
     var userId = User.Identity.GetUserId();
     var userAux = db.Users.Include(u => u.ListO).First(u => u.Id == userId);
    

    【讨论】:

      【解决方案2】:

      你可以在任何你想要的地方注入HttpContextAccessor,然后使用UserManager获取当前用户。

      internal interface IAccountRepository
      {
          Task<User> GetCurrentUser();
      }
      internal class AccountRepository : IAccountRepository
      {
          private readonly MyDbContext my_context;
          private readonly UserManager<Entities.User> user_manager;
          private readonly HttpContextAccessor http_context;
          public AccountRepository(UserManager<Entities.User> user_manager, MyDbContext my_context, HttpContextAccessor http_context)
          {
              this.user_manager = user_manager;
              this.my_context = my_context;
              this.http_context = http_context;
          }
      
          public async Task<User> GetCurrentUser()
          {
              var user = await user_manager.GetUserAsync(http_context.HttpContext.User);
              return ToDto(user);
          }
      
          #region Conversion methods
          internal static Entities.User ToEntity(User user)
          {
              if (user == null) return null;
              return new Entities.User
              {
                  Id = user.Id,
                  Email = user.Email,
                  UserName = user.UserName,
                  PictureUrl = user.PictureUrl
              };
          }
          internal static User ToDto(Entities.User user)
          {
              if (user == null) return null;
              return new User
              {
                  Id = user.Id,
                  Email = user.Email,
                  UserName = user.UserName,
                  PictureUrl = user.PictureUrl
              };
          }
          #endregion
      }
      

      【讨论】:

        猜你喜欢
        • 2011-03-26
        • 1970-01-01
        • 2014-01-22
        • 1970-01-01
        • 2018-02-26
        • 1970-01-01
        • 2018-09-26
        相关资源
        最近更新 更多