实体框架v1建模多对多查找表关系

时间:2009-09-11 15:27:32

标签: entity-framework ado.net

我有以下数据库表:

表1:用户
用户ID用户名

表2:角色
RoleId
Rolename

表3:UserRole
UserId
RoleId

用户可以拥有多个角色,角色可以拥有多个用户。 当我使用EF对其进行建模时,我得到一个User实体,其中包含UserRole实体列表。我想要的是一个具有角色实体列表的用户。

有没有办法通过LINQ对此进行建模或查询以返回用户实体及其所属的角色实体?

感谢
德克

1 个答案:

答案 0 :(得分:0)

如果您建模多对多关系,则中间的表格不会出现在概念模型中。 (即你没有从“EntityObject”派生的“UserRole”类)

如果您使用EF向导,请确保您的表“UserRole”仅包含这两个字段而不包含其他字段。还要确保已在两个字段上创建了外键约束。如果你有,那么向导将创建一个正确的多对多关系。

然后查询可能看起来像

using(MyObjectContext context = new MyObjectContext(someParameters)){
    var theUser = (from user in context.UserSet
                  where user.UserId = XY
                  select user).First();
    theUser.Roles.Load();
}