【问题标题】:LINQ To Entities MultiselectLINQ To 实体多选
【发布时间】:2013-08-23 22:03:39
【问题描述】:

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

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

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

我有一个标准 一对多(桥表) 决赛桌的桥牌桌多对一 最后是原始表的特定键 如果它有帮助,那么在这个混乱的顶部有一个用户表,其中包含一对多用户到角色

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

角色, & RolePermission,(桥接/映射任何你想叫它的东西,它有FK's for Role & Permission) [不幸的是,它还有其他列,否则不会有那么大的压力。 IE。它不是 在实体框架中抽象其实际存在], & 权限。

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

How do you do Multiple Inner Joins in Linq to Entities

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

这只是 Peuedo 代码伙计们,我已经在这种情况下输入了几十次尝试

参数 p_RoleId --- 这个的潜在版本可以得到 RoleId's per pass in 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 子句。 到处都有两个表示例.. 但是当你有一个桥表时,我什么也没找到

【问题讨论】:

  • 是的,这可能会很好

标签: c# linq entity-framework


【解决方案1】:

试试这个

var result = (from p in context.Permissions
                      join px in m.RolePermissions on p.roleID equals px.roleID
                      select p);

【讨论】:

  • @ChristianProgrammer 这并不意味着什么,有时他们会投反对票,因为这是他们的习惯。所以不要太介意/太在意这个。
  • 感谢大家的帮助
【解决方案2】:

嗯,你绝对可以用你的伪代码做你正在写的事情。毕竟你所做的是一个隐含的连接。但它可能效率不高。

你实际上是在做一个

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();

【讨论】:

  • 这个流浪的that是什么?
【解决方案3】:

这是你想要的吗?

var result=(from p in context.Permissions 
            join rp in m.RolePermissions on p.RoleId equals rp.RoleId
            select p)

【讨论】:

  • 老兄,这就是 Henry Tshobo 上面的建议......我现在很好,每个人都非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2013-07-29
  • 2023-03-11
  • 2011-03-25
  • 1970-01-01
  • 2011-11-09
相关资源
最近更新 更多