实体框架linq到实体

时间:2009-07-24 03:50:47

标签: entity-framework linq-to-entities

以前当我想在sql查询中获取相关数据时,我会连接表,但是现在在linq中我希望通过另一个表从表中获取数据的实体。我不知道如何在linq中对实体执行这种查询。如果有人可以提供帮助,那将是件好事。

该示例是一个名为person的表,它与表用户有关系,与表角色相关。我希望能够获得一个具有特定角色的人。由于人只与用户有关,间接通过用户与角色相关,所以我不确定查询。另外使用导航属性也不能让我一路走来。

任何信息都会很好。以下是数据库结构的示例:

db structure http://img194.imageshack.us/img194/4540/persons.jpg

2 个答案:

答案 0 :(得分:2)

如果您在VS中使用生成器(即,drap drop数据表和图表以及键都在db中设置),那么您要求的东西可能已经自动存在。

e.g。

from Person in Context.Persons
where Person.Name == "PETER PAN"
select Person.User.Role.RoleName;

确切名称需要引用代码生成器,但这是个主意。 Linq to entities将帮助您映射外键和那些外键。

修改

其实我没有尝试过使用include。但是根据msdn:include method,include应该显示对象层次结构。因此,要使查询正常工作,请尝试:

from c in db.Persons.Include("aspnet_Users").Include("aspnet_Roles")
    where c.aspnet_Users.aspnet_Roles.RoleName == "Role" select c

而且,你会考虑从角色开始吗?

from r in db.aspnet_Roles
where r.RoleName == "ROLE"
select r.aspnet_Users.Persons

答案 1 :(得分:1)

(from u in db.aspnet_Users.Include("Person") 
 from c in db.aspnet_Roles 
 where c.RoleName == "role" 
 select u.Persons);

感谢你努力尝试。