CodeFirst中的多级包含 - EntityFrameWork

时间:2011-01-20 18:18:50

标签: entity-framework entity-framework-ctp5

这是工作代码;

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).(Include"Contexts.AdditionalProperties.Field");

但是你知道如果我们在“Contexts.AdditionalProperties.Field”中的字符串语句中出错,它就不会产生编译时错误

我想在下面编写代码;

IQueryable<Product> productQuery = ctx.Set<Product>().Where(p => p.Id == id).Include(p => p.Contexts);

但是上述声明无法定义AdditionalProperties和Field。

我们该怎么做?

我想编写多个包含用于构建查询的内容。

感谢。

1 个答案:

答案 0 :(得分:42)

如果 AdditionalProperties 是对另一个对象的单个引用:

using System.Data.Entity;
...
IQueryable<Product> productQuery = ctx.Set<Product>()
        .Include(p => p.Contexts.AdditionalProperties.Field)
        .Where(p => p.Id == id);


如果 AdditionalProperties 是一个集合,那么您可以使用选择方法:

IQueryable<Product> productQuery = ctx.Set<Product>()
        .Include(p => p.Contexts.AdditionalProperties.Select(a => a.Field))
        .Where(p => p.Id == id);

不要忘记在类文件中导入 System.Data.Entity 命名空间!