如何在Entity Framework中强制完成导航关系的加载?

Ger*_*ald 2 linq ado.net entity-framework

好的,所以我第一次尝试使用ADO.NET实体框架.

我的测试用例现在包括一个SQL Server 2008数据库,其中包含2个表,Member和Profile,关系为1:1.

然后,我使用Entity Data Model向导从数据库中自动生成EDM.它生成了一个具有正确关联的模型.现在我想这样做:

ObjectQuery<Member> members = entities.Member;
IQueryable<Member> membersQuery = from m in members select m;
foreach (Member m in membersQuery)
{
   Profile p = m.Profile;
   ...
}
Run Code Online (Sandbox Code Playgroud)

中途工作.我可以遍历所有成员.但我遇到的问题是m.Profile始终为null.MSDN库上LINQ to Entities的示例似乎表明我将能够无缝地遵循这样的导航关系,但它似乎不会那样工作.我发现如果我首先在某个单独的调用中加载配置文件,例如使用entities.Profile.ToList,那么m.Profile将指向一个有效的配置文件.

所以我的问题是,是否有一种优雅的方式来强制框架自动加载导航关系中的数据,或者我是否需要通过连接或其他方式明确地执行此操作?

谢谢

Ger*_*ald 6

好吧,我设法找到了我需要的答案http://msdn.microsoft.com/en-us/magazine/cc507640.aspx.以下查询将确保加载Profile实体:

IQueryable<Member> membersQuery = from m in members.Include("Profile") select m;
Run Code Online (Sandbox Code Playgroud)