【发布时间】:2011-03-27 03:03:50
【问题描述】:
所以,在我的上一篇文章中,我询问如何使用 LINQ 和 EF4 (See Here) 构建动态搜索过滤器,最后想出了将表达式构建为字符串并使用动态 LINQ 库。
我解决了这个问题。我能够生成一个Expression<Func<TSource, out bool>> 并将其传递给DbSet 的Where() 方法。我也在尝试使用 MySql 作为 EF4 背后的数据库来做到这一点。
当我尝试对整数应用字符串操作时,问题就出现了,例如搜索连续数字以 1234 开头的数据库记录。
我最初的表达是:record.ConsecutiveNumber.ToString().StartsWith("1234")。遗憾的是,正如预期的那样,事情并不那么容易,因为 EF4 无法查询 DbSet 异常:
"LINQ to Entities 无法识别 方法'System.String ToString()' 方法,而这种方法不能 翻译成商店表达式。”
经过一些谷歌搜索后,我发现这是一个常见问题。但是来吧!有没有办法执行搜索功能,可以搜索以“1234”开头的连续数字的记录?
专业人士如何使用 EF4 实现搜索功能?这是一个单一的属性过滤器。如果我想添加多个过滤器怎么办?天哪,我的头好痛……:/
谢谢!
编辑:
想法#1:存储过程呢?从 Linq 调用 MySql 存储过程怎么样?我的目标是不是太高了?
【问题讨论】:
标签: c# mysql linq entity-framework linq-to-entities