1

我有一个从我的数据库生成的实体框架。在这个数据库中有一个名为 User_Security_Role 的表,它由两个字段组成:Employee_ID 和 User_Name。这两个字段都充当其主键,也是外键。这些字段来自两个表 Sytem_Role(以 Role_ID 作为其 PK)和 User_Identity(以 User_Name 作为其 PK)。生成 .edmx 文件时,User_Security_Role 表不是作为表生成的,而是作为两个实体之间的关联集生成的:System_Role 和 User_Identity。

我想用以下查询查询 EF:

var usr = from u in _imEntities.User_Security_Role
          where u.Role_ID == 3
          select u.User_Name;

但是,“User_Security_Role”没有显示为实体集中的实体,现在我不确定如何查询它,因为它是一个关联集。如何编写 linq 查询以从关联而不是实体中选择数据?

4

1 回答 1

0

听起来 EF 已将 User_Security_Role 表标识为多对多关系中不需要的表(它可能是)。在这种情况下,您可以将查询编写为以下内容之一:

var usr = From u in _imEntities.User_Identities
          where u.Roles.Any(r => r.Role_ID == 3)
          select u;

或者

var usr = from r in _imEntities.System_Roles
          where r.Role_ID == 3
          from u in r.UserSecurities
          select u;
于 2013-02-15T18:06:43.363 回答