EF6根据某些过滤器加载相关实体的子集

时间:2014-09-15 15:51:18

标签: c# entity-framework entity-framework-6.1

我发现这个http://msdn.microsoft.com/en-US/data/jj574232但是这似乎只适用于单个实体

var blog = context.Blogs.Find(1); 

// Load the posts with the 'entity-framework' tag related to a given blog 
context.Entry(blog) 
    .Collection(b => b.Posts) 
    .Query() 
    .Where(p => p.Tags.Contains("entity-framework") 
    .Load();

由于博客不仅仅是一个实体......而是一个集合本身。有谁知道如何重写这个.Entry正在博客集合上运行。我找不到任何关于这样的事情的文件

这意味着您不必特别抓取一个并对其进行操作,但它会循环遍历每个并执行操作。

context.Blogs.ForEach(entity in Blogs).Collection(b => b.Posts) 
    .Query() 
    .Where(p => p.Tags.Contains("entity-framework") 
    .Load();

2 个答案:

答案 0 :(得分:0)

您只能为一个实体加载相关的Explicitly。如果需要为多个实体加载相关数据,则必须加载相关数据Eagerly

答案 1 :(得分:0)

我认为这应该可以解决问题:

var posts = context.Blogs
                   .SelectMany(x => x.Posts)
                   .Where(x => x.Tags.Contains("entity-framework");