ApplicationDbContext ToListAsync() 不返回'Id'列数据



Asp.NET MVC noob here

我有一个AppUserRepository,任务是:

public async Task<IEnumerable<AppUser>> GetAllForFirm(Tenant tenant)
{
return await _context.AppUsers.Where(u => u.Tenant == tenant && u.isDeleted == false).ToListAsync();
}

然后我这样称呼这个任务:

ViewModel:

public List<AppUser> UsersForFirm { get; set; }

控制器(AppUserController(:

string username = User.Identity.Name;
AppUser user = await _appUserRepository.GetByUsernameAsync(username);
AppuserViewModel avm = new AppuserViewModel();
avm.UsersForFirm = (List<AppUser>)await _appUserRepository.GetAllForFirm(user.Tenant);

(对于额外的上下文,每个AppUser都有一个关联的"Tenant"对象(

这几乎可以正常工作,avm.UsersForFirm现在拥有一个AppUser列表,其中给定的Tenant对象是关联的,我可以提取所有相关信息,如用户名、电子邮件地址、上次登录日期等。到目前为止一切都很好。。。

但是,当我尝试分配avm.Id时,我的GetAllForFirm任务似乎为每个返回的AppUser返回一个空白的Guid(00000000-0000-0000-0000-000000000000)。如果我检查我的数据库(在AspNetUsers表中,我的所有AppUser信息都存储在该表中(,则所有AppUsers都有一个有效的(不是空白的(Id,这是唯一与GetAllForFirm()任务结果不同的信息。

有人能解释为什么会这样,以及我做错了什么吗?

谢谢!

尝试此操作并通过viewmModel

这是控制器

using Microsoft.AspNetCore.Identity;
using WorkshopPro.Areas.Identity.Data;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
public class UsersAdmin : Controller
{
private UserManager<ApplicationUser> userManager;
private readonly YourContext _cs;


public UsersAdmin(UserManager<ApplicationUser> usrMgr, YourContext cs)
{
userManager = usrMgr;
this.roleManager = roleManager;
_cs = cs;
}

public IActionResult Index()
{
return View(userManager.Users.Where(u => u.Tenant == tenant && u.isDeleted == false).ToList());
}
}

然后在您的视图下

@model IEnumerable<YourProject.Areas.Identity.Data.AppUser>
<table>
@foreach (var item in Model)
{
<tr>
<td></td>
</tr>
}
</table>

在我的案例中,这是因为我的AppUser.cs模型中有一个Id字段。

删除这些线路

public class AppUser : IdentityUser
{
[Key] //<----------- This one
public string Id { get; set; }//<----------- And this one

在这之后,我遇到的许多其他问题也得到了解决,比如User.IsInRole总是返回false(实际上还有与用户角色有关的任何其他问题(。

我花了整整三天的时间试图解决这个问题,我希望这能帮助其他人。

最新更新