【发布时间】:2011-01-02 20:33:42
【问题描述】:
我正在尝试进行一个简单的查询,该查询既涉及急切加载又涉及投影,但遇到了问题。我正在使用 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();
}
这导致文章的类别属性为空。如果我取出投影,它工作得很好。看了this后,似乎提示我需要在投影后做include,所以我把查询改成:
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();
}
这会导致类似于this SO post 的异常(见下文)。
"无法转换类型 'System.Linq.IQueryable
1' to type 'System.Data.Objects.ObjectQuery1'。 LINQ to Entities 仅支持强制转换 实体数据模型基元类型。”
那么,我该怎么做呢?
【问题讨论】:
标签: entity-framework linq-to-entities