【发布时间】:2013-04-21 17:40:08
【问题描述】:
我正在使用带有 Code First 方法的 .NET 4.5 和 EF 5,现在我需要实现全文搜索。 我已经阅读了很多关于它的内容,到目前为止我的结论是:
无法使用 Code First 映射存储过程和表值函数。
-
我仍然可以使用动态 sql 调用它们
dbContext.Database.SqlQuery
(Sql,参数)
但这会返回 IEnumerable 并且我想要 IQueryable 以便在从数据库服务器获取数据之前进行更多过滤。我知道我可以将这些参数发送到 Db 函数,但我不希望这样。
-
我发现可以满足我需求的是来自 IObjectContextAdapter 的 CreateQuery 函数,它看起来像这样(全选仅用于测试):
IQueryable
结果 = ((IObjectContextAdapter)dbContext).ObjectContext.CreateQuery ("SELECT * FROM Movie"); 但是执行此操作会引发异常” 'System.Data.EntitySqlException 未处理 H结果=-2146232006 Message=查询语法无效。近期'*',第 1 行,第 9 列。'
所以问题是:
为什么会出现此异常,能否修复?
如果没有,Code First 有什么方法可以执行返回 IQueryable 的 FTS 吗?
【问题讨论】:
-
只是为了更新答案:我的帖子(目前是最后一个)关于以下主题:a-composable-full-text-search-with-a-code-first-model
标签: ef-code-first full-text-search iqueryable createquery