Как использовать «Включить» и «Анонимный тип» в одном запросе в Entity Framework? - PullRequest
5 голосов
/ 17 февраля 2011

В Как подсчитать связанные объекты, используя Where In Entity Framework Я получаю этот запрос

Но когда я получаю доступ к queryResult [0] .post.Category или queryResult [0] .post. Теги всегда пустые, потому что я не использую Include.

Включите, не работайте с Projection, как говорят в Microsoft, наконец, здесь: 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()
                               })

Как я могу получить количество в том же запросе и включить связь с тегами и категориями?

Почему исправление отношений EF здесь не работает?

1 Ответ

1 голос
/ 25 февраля 2011

Это можно сделать с помощью 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]);
}

Диего Вега: http://social.msdn.microsoft.com/Forums/en-US/adonetefx/thread/c0bae1c1-08b2-44cb-ac29-68a6518d87bd

...