指定的类型成员在 LINQ to 实体中不受支持

本文关键字:实体 支持 to LINQ 类型 成员 | 更新日期: 2023-09-27 18:32:30

我有一组故事和评论,我试图在被API调用时返回一个较小的DTO实体。

我正在尝试检索最后一条评论,但收到错误"LINQ to Entities 不支持指定的类型成员'LastComment'。仅支持初始值设定项、实体成员和实体导航属性。

我的故事.cs:

public Story()
{
    Comments = new List<Comment>();
}
public int StoryId { get; set; }
public List<Comment> Comments { get; set; }
public Comment LastComment
{
    get
    {
        return Comments.LastOrDefault();
    }
}

还有我的 API GET 方法:

public IEnumerable<StoryDTO> Get()
{
    return from p in db.Stories
               .Include(x => x.Comments)
           select new StoryDTO()
           {
               StoryId = p.StoryId,
               LastComment = p.LastComment,
               NumberOfComments = p.Comments.Count
           };
}

我希望 Linq 无法将我的查询转换为 SQL,但我不确定解决此问题的正确方法。

指定的类型成员在 LINQ to 实体中不受支持

您可以尝试以下代码:

return (db.Stories.Include(x => x.Comments)).AsEnumerable().Select(p => 
           new StoryDTO()
           {
               StoryId = p.StoryId,
               LastComment = p.LastComment,
               NumberOfComments = p.Comments.Count
           };

这样,您将处理 LINQ to Objects,EF 不会尝试将所有内容转换为 SQL

相关文章: