.net 实体框架-一对多关系返回的记录数不正确

.net 实体框架-一对多关系返回的记录数不正确,.net,entity-framework,entity-framework-core,.net,Entity Framework,Entity Framework Core,“用户”实体在“组成员”实体上具有一对多关系 在UserDbContext类中,我设置了如下关系: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<GroupMember>() .HasKey(x => x.UserId); modelBuilder.Entity<GroupMember>()

“用户”实体在“组成员”实体上具有一对多关系

在UserDbContext类中,我设置了如下关系:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<GroupMember>()
        .HasKey(x => x.UserId);

    modelBuilder.Entity<GroupMember>()
        .HasOne(x => x.User)
        .WithMany(x => x.GroupMembers)
        .HasForeignKey(x => x.UserId);
}
“GroupMembers”字段应包含七条记录。查询结果是“GroupMembers”字段的一条记录

我不明白为什么我没有得到关系的正确记录计数。

使用这个流畅的API

modelBuilder.Entity<GroupMember>()
    .HasKey(x => x.UserId);
如果要映射到现有数据库,这就足够了(因为您希望查询中有多条记录,因此您知道该表存在并且每个用户都包含多条记录,如果
UserId
是唯一的,这是不可能的)


但是,如果您在迁移中使用代码优先的方法,请确保在完成上述更改后创建并应用新的迁移。

请不要自己创建/设置DBContext。请使用Scaffold Dbcontext命令为您自动生成Dbcontext

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

非常感谢你帮助我理解这个问题。
var user = _dbContext.Users
                .Include(u => u.Profiles)
                .Include(u => u.GroupMembers)
                    .ThenInclude(gm => gm.Group)
                .Where(u => u.Id == id)
                .Select(u => u)
                .SingleOrDefault();
modelBuilder.Entity<GroupMember>()
    .HasKey(x => x.UserId);
modelBuilder.Entity<GroupMember>()
    .HasKey(x => new { x.GroupId, x.UserId });
Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models