指定的类型成员在 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,但我不确定解决此问题的正确方法。
您可以尝试以下代码:
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