C# 如何获取当前登录的ApplicationUser(EF6)的完整对象
我为此寻找了一个解决方案,但我发现的那个似乎不起作用或很旧 我有一个用户对象,它有一个列表,但是当我试图用UserManager获取它来添加内容时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
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
};
}
#端区
}