【发布时间】:2011-04-15 20:07:28
【问题描述】:
我在我的应用程序中使用带有 LINQ 的全文搜索,由于 LINQ 不支持,我使用表值函数解决方法。该函数是在 SQL Server 2008 上创建的。
令人惊讶的是,当我搜索简单的文本时,我收到错误“全文查询字符串的全文查询参数无效”,例如“经理”
我使用 SQL Server Profiler 发现 LINQ 将参数生成为 nvarchar(4000) 而不是我函数中的 nvarchar(250)。
最大的惊喜是我更改了我的 SQL Server 函数,使其接受参数为 nvarchar(4000) 而不是 nvarchar(250),问题就解决了。
我也在玩将参数更改为 nvarchar(2000) 和更少,但这也没有用。
有人知道为什么会这样吗?
2013 年 11 月 18 日更新 - 好消息和坏消息
好消息 - 我现在在这个特定示例中使用 Entity Framework 6,并且不再需要使用 nvarchar(4000)
坏消息 - 你必须改用 nvarchar(max) :-(
【问题讨论】:
-
唯一想到的就是你在设计dbml时缓存了数据库表结构。您可以将其完全更改为 nvarchar(max) 并在您的应用程序中重新映射。
标签: asp.net linq-to-sql sql-server-2008 user-defined-functions