Я пытаюсь выполнить простой запрос, который включает как загрузку, так и проекцию, и у меня возникли проблемы. Я использую CodeFirst CTP5, но я полагаю, что эта проблема касается и прямой EF4.
Вот мой начальный запрос:
public List<ArticleSummary> GetArticles()
{
var articlesQuery = _db.Articles.Include(article => article.Category).Select(article => new ArticleSummary
{
Article = article,
CommentsCount = article.Comments.Count
});
return articlesQuery.ToList();
}
Это приводит к тому, что свойство category статьи имеет значение null. Если я снимаю проекцию, она работает просто отлично. После прочтения this кажется, что мне нужно выполнить включение после проекции, поэтому я изменил запрос на:
public List<ArticleSummary> GetArticles()
{
var articlesQuery = _db.Articles.Select(article => new ArticleSummary
{
Article = article,
CommentsCount = article.Comments.Count
});
articlesQuery = articlesQuery.Include(x => x.Article.Category);
return articlesQuery.ToList();
}
Это приводит к исключению (см. Ниже), которое похоже на этот пост SO .
"Невозможно сотворить тип
'System.Linq.IQueryable 1' to type
'System.Data.Objects.ObjectQuery
1'.
LINQ to Entities поддерживает только приведение
Типы примитивов модели данных объекта. "
Итак, как мне это сделать?