如何使用没有字符串的热切加载相关实体?

时间:2013-07-31 15:29:55

标签: c# entity-framework-5 iqueryable eager-loading

我想对负载相关实体使用预先加载,我看到this page

在这个例子中,我可以看到有两种获取相关实体的方法:

var princesses1 = context.Princesses
                          .Include(p => p.Unicorns)
                          .ToList();


var princesses1 = context.Princesses
                          .Include("Unicorns")
                          .ToList();

第一种方法是使用lambda表达式(我认为正确的名称是,如果没有,请更正我),第二种方法是使用带有相关实体名称的字符串。

在我的情况下,我可以使用第二种,因为在第一种方式中,当我无法获得lambda表达式中相关实体的属性时。我使用这段代码:

IQueryable<Customers> myQuery;
myQuery = myContext.Customers.Include("Orders");

但如果我尝试使用第二种方式:

IQueryable<Customers> myQuery;
myQuery = myContext.Customers.Include(c=>c.?????);

我无法选择订单属性。

为什么?

2 个答案:

答案 0 :(得分:2)

您应该使用System.Data.Entity以便能够在Include方法中使用lambda表达式:

using System.Data.Entity;

答案 1 :(得分:1)

将其添加到文件顶部:

using System.Data.Entity;

这包括对DbExtensions类的引用,该类提供了包含扩展方法。