【发布时间】:2011-04-11 21:17:03
【问题描述】:
我正在根据从用户那里获得的参数构建一个 IQueryable。其中一个参数是多选,我需要检索包含任何选定值的记录。
处理它的代码是:
var ids = parameters.DeliveryID.ToArray();
courses = courses.Where(c => ids.Contains(c.CourseDeliveryID));
在上面的代码中:
1. ids - 是一个字节数组,我在调用 Contains() 之前确保它有多个值。
2. c.CourseDeliveryID - 这是一个字节值。
在数据库中,我将 CourseDeliveryID 存储为 tinyint (SQL Server 2008)。
编译就好了。
当我运行代码时,我得到以下 ArgumentException:
DbExpressionBinding requires an input expression with a collection ResultType.
Parameter name: input
我在这里找到了该异常的文档: http://technet.microsoft.com/en-us/library/system.data.common.commandtrees.expressionbuilder.dbexpressionbuilder.bindas.aspx
在尝试解决问题时,我发现如果我在 short、int 或 long 上使用相同的代码,我没有任何问题。
我从昨天开始就这件事与 Microsoft 保持联系,当我知道更多信息时会更新,但与此同时,我想如果可能的话,我也会把它扔在这里以获得更多建议。
提前致谢!
【问题讨论】:
-
打开您生成的 edmx 实体框架文件并查看 CourseDeliveryID 映射到的数据类型。也许它没有正确地将 tinyint 识别为字节。
-
@Milimetric - 非常感谢您的提示,但它没有帮助.. 我检查了 XML 定义文件,属性已正确映射并定义为字节:
.
标签: c# .net linq entity-framework entity-framework-4