这是Database First
上的基本(SQL Server
)图表:
当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; }
我哪里错了?
答案 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)
)