如何获得链接的1-n元素的列表? [英] How can I get a list of linked 1-n elements?

查看:88
本文介绍了如何获得链接的1-n元素的列表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

That's my basic (Database First) diagram on SQL Server:

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

When I Update Model from Database using Entity Framework (6.x) within my MVC application, I expect Users got this property:

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; }

我在哪里错了?

推荐答案

您的设计错误.

多对多关系由一个表定义,该表仅由两个经过考虑的表的ID组成,这些ID组成了组合键.您几乎具有这种设计,但是您还有关系"表的其他主键,该表会破坏所有内容:)

Many-to-many relation is defined by a table, which consist only of two IDs of considerated tables, which togeteher form composite key. You have almost this design, but you have additional primary key to "relation" table, which ruins everything :)

如果使用此代码生成表,则会获得正确的关系:

If you use this code to generate your tables, you'll get correct relations:

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

这篇关于如何获得链接的1-n元素的列表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆