gpt4 book ai didi

ef-code-first - Entity Framework 5、代码优先、全文搜索但可通过 CreateQuery 查询?

转载 作者:行者123 更新时间:2023-12-02 02:03:24 25 4
gpt4 key购买 nike

我正在使用 .NET 4.5 和 EF 5 以及 Code First 方法,现在我需要实现全文搜索。我已经阅读了很多相关内容,到目前为止我的结论是:

  • 存储过程和表值函数不能用 Code First 映射。

  • 我仍然可以使用动态 sql 调用它们

    dbContext.Database.SqlQuery (Sql,参数)

但是这会返回 IEnumerable 并且我想要 IQueryable 以便我可以在从数据库服务器获取数据之前进行更多过滤。我知道我可以将这些参数发送到 Db 函数,但我不想这样。

  • 我发现可以满足我需求的是来自 IObjectContextAdapter 的 CreateQuery 函数,它看起来像这样(全选只是为了测试):

    IQueryable 结果 = ((IObjectContextAdapter)dbContext).ObjectContext.CreateQuery ("SELECT * FROM Movie");

  • 但是执行这个会抛出异常"'System.Data.EntitySqlException 未处理HResult=-2146232006Message=查询语法无效。近期“*”,第 1 行,第 9 列。'

所以问题是:

  • 为什么会出现此异常,是否可以修复?

  • 如果没有,Code First 是否有任何方法可以执行返回 IQueryable 的 FTS?

最佳答案

这样试试

ObjectQuery<Movie> query = 
objectContext.CreateQuery<Movie>(@"SELECT VALUE movie FROM Movies");

至于为什么请看这些链接

Differences from Transact-SQL Unlike Transact-SQL, Entity SQL does not support use of the * argument in the SELECT clause. Instead

Entity SQL Reference - SELECT
"SELECT VALUE" - value keyword in LINQ/Entity Framework query

关于ef-code-first - Entity Framework 5、代码优先、全文搜索但可通过 CreateQuery 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16134193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com