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

时间:2018-05-21 10:49:28

标签: c# sql-server model entity-framework-6 ef-database-first

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

enter image description here

Update Model from Database在我的Entity Framework应用程序中使用MVC(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; }

我哪里错了?

1 个答案:

答案 0 :(得分:2)

你的设计错了。

多对多关系由一个表定义,该表只包含两个考虑周到的表的ID,这些表用于形成复合键。你几乎有这个设计,但你有额外的主键,以及#34;关系&#34;表,它毁了一切:)

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

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)
)