Entity framework 跨关联的LINQ查询

Entity framework 跨关联的LINQ查询,entity-framework,linq-to-entities,linq-query-syntax,Entity Framework,Linq To Entities,Linq Query Syntax,我有一个从数据库生成的实体框架。在这个数据库中有一个名为User\u Security\u Role的表,它由两个字段组成:Employee\u ID和User\u Name。这两个字段都用作主键,也是外键。字段来自两个表Sytem_Role,其主键为Role_ID,主键为User_Identity,其主键为User_Name。生成.edmx文件时,用户安全角色表不是作为表生成的,而是作为两个实体(系统角色和用户标识)之间的关联集生成的 我想通过以下查询查询EF: var usr = from

我有一个从数据库生成的实体框架。在这个数据库中有一个名为User\u Security\u Role的表,它由两个字段组成:Employee\u ID和User\u Name。这两个字段都用作主键,也是外键。字段来自两个表Sytem_Role,其主键为Role_ID,主键为User_Identity,其主键为User_Name。生成.edmx文件时,用户安全角色表不是作为表生成的,而是作为两个实体(系统角色和用户标识)之间的关联集生成的

我想通过以下查询查询EF:

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

但是,User_Security_角色在实体集中没有显示为实体,我不知道如何查询它,因为它是一个关联集。如何编写linq查询以从关联而不是实体中选择数据?

听起来EF已经将用户安全角色表标识为可能是多个关系中不需要的表。在本例中,您将按照以下方式之一编写查询:

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


您能修改您的问题吗?您能在EDMX中看到User_Security_Role表吗?不,它不被视为一个实体。它被视为EDMX中用户标识和系统角色实体之间的关系。非常感谢。我已经在这几天了!!!我使用了第二种选择。这解决了这么多问题。再次感谢…您能告诉我如何将数据添加到关联集的User\u Security\u Role表中,例如:\u immenties.AddObject User\u Security\u Role,user1_基本情况、变化;您不会直接将数据添加到中间表中。从面向对象的角度考虑这一点。在这种情况下,您将选择一个用户currentUser=\u imEntities.Users.Firstu=>u.UserId=123,然后向该用户添加一个现有角色。currentUser.Roles.AddRoleThaks非常喜欢。事实上我已经猜出了那部分。我现在无法从所选用户中删除角色。我的代码是:_ementities.Detachrole;role.User_Identity.Removeusr_基本情况、变化;不要使用“分离”。这将删除对象跟踪。因此.Remove无法跟踪更改。作为语义替代,如果要从用户中删除角色,请考虑用户。基本情况、变化;
var usr = from r in _imEntities.System_Roles
          where r.Role_ID == 3
          from u in r.UserSecurities
          select u;