简体   繁体   English

如何在Entity Framework中的同一查询中使用Include和Anonymous Type?

[英]How to use Include and Anonymous Type in same query in Entity Framework?

In How To Count Associated Entities using Where In Entity Framework I get this query 如何使用Where In Entity Framework中计算关联实体我得到此查询

But when I access queryResult[0].post.Category or queryResult[0].post.Tags it´s always empty, because I am not using Include. 但是当我访问queryResult [0] .post.Category或queryResult [0] .post.Tags时它总是空的,因为我没有使用Include。

Include dont work with Projection, as microsoft say at last item here: http://msdn.microsoft.com/en-us/library/bb896317.aspx 包括不使用Projection,正如微软在最后一项所述: http//msdn.microsoft.com/en-us/library/bb896317.aspx

var queryResult = (from post in posts
                           join comment in comments.Where(x=> x.IsPublic) on post.Id equals comment.Post.Id into g
                    select new
                               {
                                   post,
                                   post.Author,
                                   post.Tags,
                                   post.Categories,
                                   Count = g.Count()
                               })

How I can get the Count in the same query, and Include relationship to Tags and Categories? 我如何在同一个查询中获取Count,并包含与标签和类别的关系?

Why EF relationship fix-up dont work here? 为什么EF关系修复不起作用?

This can be done with 2 queries: 这可以通过2个查询完成:

var posts =
  from post in context.Posts.Include(p => p.Author).Include(p => p.Tags).Include(p => p.Categories)
  where post.Comments.Any(c => c.IsPublic)
  select post;
var counts =
  from post in context.Posts
  where post.Comments.Any(c => c.IsPublic)
  select new { PostId = post.Id, Count = post.Comments.Count() };
var countDictionary = counts.ToDictionary(e => e.PostId, e => e.Count);

foreach (var item in posts)
{
  System.Console.WriteLine("PostId {0}, TagCount {1}, PublicCommentCount {2}", item.Id, item.Tags.Count, countDictionary[item.Id]);
}

By Diego Vega: http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/c0bae1c1-08b2-44cb-ac29-68a6518d87bd 作者:Diego Vega: http//social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/c0bae1c1-08b2-44cb-ac29-68a6518d87bd

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM