实体框架使用外键从表中检索数据

mpa*_*baz 10 c# sql linq linq-to-entities entity-framework

我的SQL Server数据库中有3个表Role,PermissionRolePermission.

RolePermission由两列的qRoleqPermission哪些是其他两个表的外键.

因此,当Entity Framework为其创建模型时,它只创建两个类并将虚拟属性添加RolePermission到每个角色和权限类中.

现在我需要选择列,RolePermission所以我写了这段代码:

var rolePermission = PREntitiy.Roles.Where(r => r.qRole == TxtRole.Text)
                                    .Select(p => p.Permissions);
Run Code Online (Sandbox Code Playgroud)

这样做我可以访问rolePermission表,但是我需要从角色表中检索一些列,并从rolePermission单个查询中检索一些列,就像我们在SQL中的join语句中所做的那样.

换句话说,我需要一个linq查询来访问角色表中的一些列和一些来自rolePermission但我需要在一个linq查询中执行它,就像SQL中的join语句一样.

谢谢

Bla*_*ICE 26

你正在寻找.Include()声明

http://msdn.microsoft.com/en-us/data/jj574232.aspx

var role = PREntitiy.Roles.Include(r=>r.Permission).Where(r => r.qRole == TxtRole.Text)
Run Code Online (Sandbox Code Playgroud)

我没有你的所有类,所以Permission属性可能不正确.

您可以使用正常的点符号访问每个类的属性:

var x = role.name;
var y = role.Permission.Name;
Run Code Online (Sandbox Code Playgroud)

等等

  • 谢谢,它确实有帮助,只需要提一下你需要注意Include是System.Data.Entity命名空间中的扩展方法,所以请确保你使用的是该命名空间. (9认同)