繁体   English   中英

ApplicationDbContext ToListAsync() 不返回“Id”列数据

[英]ApplicationDbContext ToListAsync() not returning 'Id' Column data

Asp.NET MVC 菜鸟在这里

我有一个带有任务的AppUserRepository

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

然后我像这样调用这个任务:

视图模型:

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都有一个关联的“租户”object)

这几乎可以正常工作,并且avm.UsersForFirm现在拥有一个AppUser列表,其中与给定的Tenant object 相关联,我可以提取所有相关信息,如用户名、Email 地址、lastLoggedIn 日期等。到目前为止一切都很好......

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

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

谢谢!

试试这个并通过 viewmModel

这是 controller

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 Model 中有一个 Id 字段。

删除这些行

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

是什么为我解决了它。 在此之后,我遇到的许多其他问题也得到了修复,例如 User.IsInRole 总是返回 false (实际上与用户角色有关的任何其他问题)。

我花了整整 3 天的时间来解决这个问题,我希望这对其他人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM