0

请告知,我阅读过的所有资源、书籍、视频教程都没有我认为是简单、常见的场景。

-----通过链接到实体的桥表查询的最有效和最标准的方法是什么-----

我正在尝试使用 Linq To Entities 进行查询。我的理解是 LinqToSQL 已被弃用,即使是非正式的..

我有一个标准的一对多(桥接表)和一个多对一的桥接表用于最终表,最后是原始表的特定键如果它有帮助的话,在这个混乱的顶部有一个用户表与一个一对多的用户到角色

表:用户,(不在查询中我有这个表的特定 KeyId 用于 where 子句),

Role, & RolePermission, ( Bridge / map 不管你想怎么称呼它,它都有 Role & Permission 的 FK) [不幸的是它有其他 cols 或者这不会那么紧张。IE它没有抽象在它实际存在的实体框架中],&权限。

总结我想要这个用户的每个角色的每个权限,用户 ID 可以说 5 我有每个用户的角色列表,所以(开始)我打算为这个查询提供角色 ID 并多次调用它,,附加它的结果到列表 4Ea RoleId 这肯定不是理想的理想是在单个查询中使用 UserID 和 RoleID...

你如何在 Linq to Entities 中进行多个内部联接

上面的这个链接声称您可以通过请求所有涉及的表来完成他的任务,而无需专门将它们加入 PK-FK 字段?!?!?!说什么 ??!

这只是 Peuedo 代码人员,我在这种情况下输入了几十次尝试

参数 p_RoleId --- 这个的潜在版本可以得到 RoleId 的每个传递的 UserID 理想情况下

List<Permissions> listToReturn = new List<Permissions>();

var result=(from p in context.Permissions 
            from rp in m.RolePermissions
            where m.roleID = p_RoleId            
listToReturn result.ToList();

我真的只是想知道如何正确地将这些表连接在一起并指定一些 where 子句。到处都有两个表格示例..但是当您有一张桥牌桌时,有一或四个我什么也没找到

4

3 回答 3

1

尝试这个

var result = (from p in context.Permissions
                      join px in m.RolePermissions on p.roleID equals px.roleID
                      select p);
于 2013-08-23T13:59:45.637 回答
1

那么你绝对可以做你在你的伪代码中写的东西。毕竟你所做的是一个隐含的连接。但它可能效率不高。

你本质上是在做一个

select <something> from Permissions , RolePermissions where permissions.id = permissionsRoles.id;

你不需要外键。但是,在您的情况下,您有很多

//with the assumption that you have a 
//navigation property between roles and rolepermissions in your model
var result = connection.Permissions 
                          .Where(i => i.Id == RolePermissionsid)that 
                          .SelectMany(i => i.RolePermissions).ToList();
于 2013-08-23T14:03:39.023 回答
0

这是你想要的吗?

var result=(from p in context.Permissions 
            join rp in m.RolePermissions on p.RoleId equals rp.RoleId
            select p)
于 2013-08-23T14:00:02.547 回答