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
C# 实体框架获取异常:System.NotSupportedException:无法创建类型为'';_C#_Entity Framework - Fatal编程技术网

C# 实体框架获取异常:System.NotSupportedException:无法创建类型为'';

C# 实体框架获取异常:System.NotSupportedException:无法创建类型为'';,c#,entity-framework,C#,Entity Framework,实体框架获取异常:System.NotSupportedException:无法创建类型为“”的常量值。在此上下文中仅支持基元类型或枚举类型 using (var ctx = ContextManager.GetContext()) { var executions = from e in ctx.Executions join o in ctx.Outputs on e.ExecutionID equals o.ExecutionID into

实体框架获取异常:System.NotSupportedException:无法创建类型为“”的常量值。在此上下文中仅支持基元类型或枚举类型

using (var ctx = ContextManager.GetContext())
{
    var executions = from e in ctx.Executions
                     join o in ctx.Outputs on e.ExecutionID equals o.ExecutionID into outputs
                     where e.Status == (int)ExecutionStatus.Pending &&
                                        outputs.All(o => o.Status != (int)OutputStatus.InProcess && o.Status != (int)OutputStatus.New)
                     select e;
}
我想要的是没有新的或正在进行的输出的执行。
如何以不同的方式编写它以使其工作?

将枚举强制转换到查询之外,只引用int变量。SQL生成器的表达式很可能试图将这些强制转换解释为要转换为SQL的内容,而不是要在内存中计算的内容

例如:

编辑: 试着改变你复杂的输出。全部(条件为正常

where e.Status == p && o => o.Status != i && o.Status != n

您是否尝试过不强制转换枚举,我可能是错的,但我认为EF将为您处理将它们转换为INT的问题。感谢您的快速响应。但不幸的是,我尝试了,但它不起作用。创建一个进行联接的视图?EF可能不会处理“输出”因为它不是模型中的东西。我不喜欢这么快创建一个视图。它应该是一个简单的linq语句。我想要的只是没有新的或inprogress输出的执行实体框架的哪个版本?@BenRobinson已经建议了。同样的例外…肯定不是这个问题。@BenRobinson建议删除我建议把它们放在外面。这有点不同。无论如何,如果这不起作用,那么你的问题不是来自于类型转换,而是来自于查询中的其他内容。如果无法访问你的实体定义,我就无法给出更多的意见。另外,突然出现的另一件奇怪的事情是你的输出。所有条件。也许我需要一些咖啡,但是你能举一个例子说明需要什么样的SQL吗?我需要这样的东西:'var exes=ctx.Executions.GroupJoin(ctx.Outputs,execution=>execution.ExecutionID,output=>output.ExecutionID,(execution,Outputs)=>new{execution,exists=outputs.Any(o=>o.Status==(int)OutputStatus.InProcess | o.Status==(int)OutputStatus.New)})。其中(item=>!item.exists)。选择(item=>item.execution)即使成功了,如果你不明白第一个错误的原因,你也一无所获。
where e.Status == p && o => o.Status != i && o.Status != n