我有一个从数据库生成的实体框架。在这个数据库中有一个名为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查询来从关联而不是实体中选择数据?
听起来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;