我有一套故事和评论,我正在尝试在被API调用时返回一个较小的DTO实体。
我正在尝试仅检索最后一条注释,但收到错误“LINQ to Entities中不支持指定的类型成员'LastComment'。仅支持初始值设定项,实体成员和实体导航属性。”
My Story.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,但我不确定解决此问题的正确方法。
答案 0 :(得分:0)
您可以尝试以下代码:
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