如何获得链接的 1-n 元素列表?

How can I get a list of linked 1-n elements?

这是我在 SQL Server 上的基本 (Database First) 图:

当我 Update Model from Database 在我的 MVC 应用程序中使用 Entity Framework (6.x) 时,我希望 Users 得到这个 属性:

public virtual ICollection<Role> Roles { get; set; }

还有角色:

public virtual ICollection<User> Users { get; set; }

但我却得到了:

public virtual ICollection<UsersRoles> UsersRoles { get; set; }
public virtual ICollection<UsersRoles> UsersRoles { get; set; }

我哪里错了?

你的设计有误。

多对多关系由 table 定义,它仅由两个考虑的 table 的 ID 组成,它们共同构成复合键。你几乎有这个设计,但是你有额外的主键到 "relation" table,这毁了一切:)

如果您使用此代码生成您的 table,您将获得正确的关系:

create table users(
    userid int identity(1,1) primary key,
    --other columns
    username varchar(10)
)
create table roles(
    roleid int identity(1,1) primary key,
    rolename varchar(10)
)
create table usersroles(
    userid int foreign key references users(userid),
    roleid int foreign key references roles(roleid),
    primary key (userid, roleid)
)