如何获得链接的 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)
)
这是我在 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)
)