我需要unoin两个查询并在联合Group之后,但是throw"必须是可简化的节点"例外。以下示例代码为:
public class ForumPost
{
public int ForumPostId { get; set; }
public string Message { get; set; }
public bool Deleted { get; set; }
public int ForumTopicId { get; set; }
public virtual ForumTopic ForumTopic { get; set; }
}
var query1 = _dbContext.ForumPosts
.Where(e => e.Deleted == true);
var query2 = _dbContext.ForumPosts
.Where(e => e.Deleted == false);
var query = query1.Union(query2);
var list = query.GroupBy(e => e.ForumTopicId)
.Select(group => new
{
group.Key,
Total = group.Count()
}).Take(10)
.ToList();
有人遇到过这个问题吗?
答案 0 :(得分:0)
我想这个特殊情况没有启用,但是当您查看EntityFramework核心路线图时,您会在“关键O / RM功能”中看到以下条目:
关键O / RM功能
在我们说EF Core是EF的推荐版本之前,我们认为我们需要的东西。在我们实现这些功能之前,EF Core将是许多应用程序的有效选项,特别是在诸如UWP和.NET Core等平台上,其中EF6.x不起作用,但对于许多应用程序而言,缺少这些功能将使EF6.xa成为更好的选择
查询
- 改进的翻译将使更多查询成功执行,在数据库中评估更多逻辑(而不是在内存中)。
- GroupBy翻译会将LINQ GroupBy运算符转换为数据库,而不是内存。
因此,如果作为解决方法,您从Union Query中获取数据(即在其上执行.ToList()
或.AsEnuberable()
)并在on上执行GroupBy,那么您将不会失去太多内存数据,直到实现这两个功能。
据我所知EntityFramework Core 1.1 is scheduled for Q4 2016 - Q1/2017,您要么等待,要么根据项目的截止日期进行解决。
如果我没记错,Rowan Miller提到他们希望保持版本与ASP.NET Core 1.1保持同步,这也是计划于2016年秋季推出的,并且没有技术原因(即需要ASP.NET Core 1.1的功能)为此,但目前它与ASP.NET Core同步,但未来可能会或可能不会获得它自己的独立发布周期。
或者,如果您非常勇敢并且您的Web应用程序还没有生产就绪,那么您可以尝试the nightly builds。