有没有人最清楚这个错误意味着什么以及如何解决它?我的所有研究都是空白,我可以看到如何在MSDN上设置它,但它没有以一种向我解释问题的方式来解释它。如果我删除了一些我的LINQ查询以设置viewbag项目,那么它似乎解决了它,但是当我设置新的并将它们传递到我的视图中以生成MVCMailer的邮件时,它又回来了。不确定它是否是一个viewbag问题,或者仅仅是我调用了太多的linq查询来生成它们以传递给视图。
我很困难(再次)..........
干杯, 史蒂夫。
DbLimitExpression需要一个集合参数。 参数名称:参数 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。
异常详细信息:System.ArgumentException:DbLimitExpression需要一个集合参数。 参数名称:参数
代码的一个例子是:
var VBSalutation = from A in context.Salutations
where A.SalutationId == policytransaction.SalutationId
select A.SalutationName;
ViewBag.Salutation = VBSalutation.FirstOrDefault();
对各种参数重复此操作,然后传递给视图。
答案 0 :(得分:2)
嗯,我遇到了类似的问题并解决了它。问题出现在WHERE子句中:左侧等于运算符(=)符号的数据类型与右侧的数据类型不匹配。所以在你的场景中:
where A.SalutationId == policytransaction.SalutationId
A的SalutationID可能是INT,策略事务的SalutationId可能是一个字符串(这就是我的情况)。
我通过将policytransaction.SalutationId分配给Int变量并使用它来解决它:
int myIntVariable = Convert.ToInt16(policytransaction.SalutationId);
...//some code here
where A.SalutationId == myIntVariable;
请注意,您无法直接在Linq中直接转换变量,否则您将收到错误“LINQ to Entities无法识别该方法”。您必须使用临时变量,然后应用where子句。
答案 1 :(得分:0)
尝试ViewBag.Salutation = VBSalutation.SingleOrDefault();