Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取当前登录的ApplicationUser(EF6)的完整对象_C#_Asp.net Mvc_Entity Framework_Entity Framework 6_Asp.net Identity - Fatal编程技术网

C# 如何获取当前登录的ApplicationUser(EF6)的完整对象

C# 如何获取当前登录的ApplicationUser(EF6)的完整对象,c#,asp.net-mvc,entity-framework,entity-framework-6,asp.net-identity,C#,Asp.net Mvc,Entity Framework,Entity Framework 6,Asp.net Identity,我为此寻找了一个解决方案,但我发现的那个似乎不起作用或很旧 我有一个用户对象,它有一个列表,但是当我试图用UserManager获取它来添加内容时 var userAux = UserManager.FindById(User.Identity.GetUserId()); 它返回列表为空的属性 我还假设db.Savechanges()也不起作用,因此如果有人知道如何进行修改,如果您告诉我如何进行修改,我将不胜感激。了解如何进行修改。我错过了一次使用,VS又给了我一个随机错误 using Sys

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

我有一个用户对象,它有一个列表,但是当我试图用UserManager获取它来添加内容时

var userAux = UserManager.FindById(User.Identity.GetUserId());
它返回列表为空的属性


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

了解如何进行修改。我错过了一次使用,VS又给了我一个随机错误

using System.Data.Entity; <<==Important

 var userId = User.Identity.GetUserId();
 var userAux = db.Users.Include(u => u.ListO).First(u => u.Id == userId);
使用System.Data.Entity;u、 Id==用户Id);

您可以将
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
}
内部接口存储库
{
任务GetCurrentUser();
}
内部类AccountRepository:IAccountRepository
{
私有只读MyDbContext my_context;
专用只读用户管理器用户管理器;
专用只读HttpContextAccessor http_上下文;
公共帐户存储库(UserManager用户\管理器、MyDbContext我的\上下文、HttpContextAccessor http\上下文)
{
this.user\u manager=user\u manager;
this.my_context=my_context;
this.http\u context=http\u context;
}
公共异步任务GetCurrentUser()
{
var user=wait user\u manager.GetUserAsync(http\u context.HttpContext.user);
返回到(用户);
}
#区域转换方法
内部静态实体。用户到实体(用户)
{
if(user==null)返回null;
返回新实体。用户
{
Id=user.Id,
Email=user.Email,
UserName=user.UserName,
PictureUrl=user.PictureUrl
};
}
内部静态用户ToDto(Entities.User用户)
{
if(user==null)返回null;
返回新用户
{
Id=user.Id,
Email=user.Email,
UserName=user.UserName,
PictureUrl=user.PictureUrl
};
}
#端区
}