C# LINQ在部署的代码中引发异常,而不是在IDE中

C# LINQ在部署的代码中引发异常,而不是在IDE中,c#,entity-framework,linq,exception,visual-studio-2012,C#,Entity Framework,Linq,Exception,Visual Studio 2012,我的LINQ语句(查询?变量?表达式?)在枚举时引发异常(.ToList()或foreach)[见下文] 在大多数环境中 从VisualStudio 2012运行时不会发生此错误-实际部署到环境时会发生此错误 关于这个错误,有很多问题,但是我会一直抛出这些异常,而不仅仅是在IDE中 然而。。。。数据是相同的(有一些测试环境指向我的机器使用的相同数据库) 代码是一样的。。。刚刚部署 // List<DbFirstEntityModelForms> formsToImport = Get

我的LINQ语句(查询?变量?表达式?)在枚举时引发异常(.ToList()或foreach)[见下文]

在大多数环境中

从VisualStudio 2012运行时不会发生此错误-实际部署到环境时会发生此错误

关于这个错误,有很多问题,但是我会一直抛出这些异常,而不仅仅是在IDE中

然而。。。。数据是相同的(有一些测试环境指向我的机器使用的相同数据库)

代码是一样的。。。刚刚部署

// List<DbFirstEntityModelForms>
formsToImport = GetSelectedRecords(collection["keyField"]);
// List<DbFirstEntityModelForms>
baseForms = GetSelectedRecords(collection["keyField"]);

var importStates = context.DbFirstEntityModelStates.AsNoTracking()
        .Where(l => context.DbFirstEntityModelForms.Where(f => f.CustomerCd == "IS" && f.LOBCd == baseLOB).Any(f => l.FormId == f.FormId && l.EditionDt == f.EditionDt));

//importStates = importStates.Where(l => formsToImport.Any(f => f.FormId == l.FormId && f.EditionDt == l.EditionDt));

// rewritten as below... still throws exception
foreach (var state in importStates)
{
    // List<DbFirstEntityModelStates>
    statesToImport.AddRange(formsToImport.Where(form => state.FormId == form.FormId && state.EditionDt == form.EditionDt).Select(form => state));
}
如果LINQ有一些根本性的错误,那么错误应该发生在所有环境中,对吗

我已经包含了一些代码,但我怀疑这是一个环境问题,只是我不知道在环境中应该看什么。 在IDE中运行时,它使用的是IIS Express,但IIS 7.0(至少)在服务器上

什么是最可能的环境问题点?[再说一遍,我认为这不是代码——代码在IDE中执行时无异常,有断点和无断点。]

[我想我会编辑一下这个问题。]


一些代码。 不确定需要多少上下文。 同样-此代码在IDE中使用相同的数据完全按照预期执行。 只有在部署时才会引发异常

// List<DbFirstEntityModelForms>
formsToImport = GetSelectedRecords(collection["keyField"]);
// List<DbFirstEntityModelForms>
baseForms = GetSelectedRecords(collection["keyField"]);

var importStates = context.DbFirstEntityModelStates.AsNoTracking()
        .Where(l => context.DbFirstEntityModelForms.Where(f => f.CustomerCd == "IS" && f.LOBCd == baseLOB).Any(f => l.FormId == f.FormId && l.EditionDt == f.EditionDt));

//importStates = importStates.Where(l => formsToImport.Any(f => f.FormId == l.FormId && f.EditionDt == l.EditionDt));

// rewritten as below... still throws exception
foreach (var state in importStates)
{
    // List<DbFirstEntityModelStates>
    statesToImport.AddRange(formsToImport.Where(form => state.FormId == form.FormId && state.EditionDt == form.EditionDt).Select(form => state));
}
//列表
formsToImport=GetSelectedRecords(集合[“关键字域]);
//名单
baseForms=GetSelectedRecords(集合[“关键字域]);
var importStates=context.DbFirstEntityModelStates.AsNoTracking()
.Where(l=>context.DbFirstEntityModelForms.Where(f=>f.CustomerCd==“IS”&&f.LOBCd==baseLOB).Any(f=>l.FormId==f.FormId&&l.EditionDt==f.EditionDt));
//importStates=importStates.Where(l=>formsToImport.Any(f=>f.FormId==l.FormId&&f.EditionDt==l.EditionDt));
//改写如下。。。仍然抛出异常
foreach(importStates中的var状态)
{
//名单
statestomimport.AddRange(formsToImport.Where(form=>state.FormId==form.FormId&&state.EditionDt==form.EditionDt)。选择(form=>state));
}

System.NotSupportedException:无法创建“DBFirstEntityObject”类型的常量值。在此上下文中仅支持基元类型或枚举类型。
位于System.Data.Objects.Elink.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter父级,ConstantExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
在System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()中
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate(IEnumerable`1参数、String argumentName、Int32 expectedElementCount、Boolean allowEmpty、Func`3映射、Func`2 collect、Func`3 deriveName)
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate()
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateNewCollection(IEnumerable`1元素、DbExpressionList和validElements)
位于System.Data.Objects.Elink.ExpressionConverter.NewArrayInitTranslator.TypedTranslate(ExpressionConverter父级,NewArrayExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter父级,ConstantExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Objects.elink.ExpressionConverter.TranslateLambda(LambdaExpression lambda,DbExpression input)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
在System.Data.Objects.Elink.ExpressionConverter.Convert()中
位于System.Data.Objects.elink.elinkQueryState.GetExecutionPlan(可为null `1 forMergeOption)
位于System.Data.Objects.ObjectQuery`1.GetResults(可为null`1 forMergeOption)
位于System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()

转到IIS并检查应用程序池及其.N