2009-09-16 37 views
0

我是EF新手,我有两个表,第一个叫ContestEntry,第二个跟ContestEntry有一对多关系。我试图访问比赛条目,然后从那里获取相关的条目信息。这是我正在使用的代码。实体框架查询:从记录中访问外键(导航)数据

ContestEntry cEntry = 
     Ctx.ContestEntries.Include("Item").Where(ce => ce.ID == 4).First(); 

问题是,当我在调试器中查看它时,项目关系为NULL。

我可能错过了一些不确定的事情。任何帮助,将不胜感激。

谢谢!

回答

3

在你的问题中,你提到秒表是“Items”,但在你的LINQ查询中,你包括“Item” - 只是一个错字?

此外,另一种方式来加载一个引用的实体会是这样:

ContestEntry cEntry = 
    Ctx.ContestEntries.Include("Item").Where(ce => ce.ID == 4).First(); 

if(!cEntry.Items.IsLoaded) 
{ 
    cEntry.Items.Load(); 
} 

如果你有一个1:N的导航性能,你应该能够检查它是否是被加载,如果没有,负载它在需要时按需提供。

Marc

+0

是的,那只是一个错字,应该是“Item”。谢谢! – Paul 2009-09-16 15:36:17

+0

另外,当我遵循你建议的代码时,我无法为cEntry对象调用IsLoaded函数。该功能也不会在智能感知中显示。谢谢! – Paul 2009-09-16 16:07:16

+0

@Paul:“IsLoaded”在cEntry上不是**,它在cEntry.Item(或应该是)上 - 如果它是Entry和多个Item元素之间的1:n关联。 – 2009-09-16 16:19:38