Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架-联合事业”;无法创建类型为“”的常量值;_Entity Framework_Linq To Entities - Fatal编程技术网

Entity framework 实体框架-联合事业”;无法创建类型为“”的常量值;

Entity framework 实体框架-联合事业”;无法创建类型为“”的常量值;,entity-framework,linq-to-entities,Entity Framework,Linq To Entities,要选择所有活动的调度s,我有以下代码: var allSchedulesOnALine = CurrentUser.Lines.SelectMany(o => o.Scheduling).Where(o => o.Active); var allSchedulesUnscheduled = Entities.SchedulingSet .Where(o => o.Line == null && o.Site.Id == CurrentUser.Site.

要选择所有活动的
调度
s,我有以下代码:

var allSchedulesOnALine = CurrentUser.Lines.SelectMany(o => o.Scheduling).Where(o => o.Active);
var allSchedulesUnscheduled = Entities.SchedulingSet
    .Where(o => o.Line == null && o.Site.Id == CurrentUser.Site.Id &&
           o.Factory == CurrentUser.Factory && o.Active);

IEnumerable<Scheduling> allSchedules = allSchedulesUnscheduled.Union(allSchedulesOnALine);
foreach(Scheduling schedule in allSchedules.OrderBy(o => o.Ordering))
{
    //Do Stuff
}
很好用

有人知道为什么会这样吗?我是否遗漏了一些重要的东西,或者这是一个bug


我应该提到我使用的是实体框架3.5。EF4目前不是我们的选择,这超出了我的控制范围:\

您正在使用“重新排序”调用两种不同的方法

您没有显示
allSchedulesOnALine
allSchedulesUnscheduled
的类型,但我打赌
allSchedulesOnALine
属于
IEnumerable
类型,
allSchedulesUnscheduled
属于
IQueryable
类型

因此,当您调用时,您要求EF将表达式转换为SQL。但是,您传递的参数的类型是
IEnumerable
,它无法将其转换为查询

另一方面,当您调用时,您要求LINQ to对象在内存中执行整个操作,这很好,尽管可能较慢


因此,行为不同的原因是您调用了两个完全不同的方法,它们做不同的事情,但恰好具有相同的名称。不,这不是错误。

我相信错误消息表明EF无法将union语句转换为SQL,但我不确定原因。是否可能
CurrentUser.Lines.SelectMany(o=>o.Scheduling)。其中(o=>o.Active)
未使用延迟执行?在这种情况下,它可能会解释为什么可以按一个方向而不是另一个方向使用它——一个在内存中运行,另一个试图完全在SQL中运行。想法?这一定是你第十二次帮我解决EF问题了,包括,我想,以前的问题(呃)。再次感谢你,克雷格!
IEnumerable<Scheduling> allSchedules = allSchedulesOnALine.Union(allSchedulesUnscheduled);