0

以下代码:

var foo = Users.Join(
                tvf_SearchUsers(queryString),
                u => u.User_Id,
                s => s.User_Id,
                (u, s) => u);

根据使用全文搜索的表值函数 (tvf_SearchUsers) 选择与查询字符串匹配的用户。此代码片段是在生产中使用时成功运行的更大方法的一部分。但是,当我在具有回滚属性的 MBUnit 测试中调用相同的方法时,搜索无法返回预期结果。如果我删除回滚属性,它可以正常工作。单元测试创​​建虚拟用户等,然后由回滚清理。似乎这些创建的项目没有被表值函数看到,就好像它在事务范围之外一样。有谁知道如何解决这个问题?

更新

如果我在 tvf 中用更简单的查询替换全文搜索功能,则操作按预期进行。所以这个问题与全文搜索有关。我正在使用 SQL Server 2008,因此 afaik SQL Server 应该能够将全文查询保留在事务范围内。

4

1 回答 1

1

可能是由于全文搜索/交易组合。如果是 sql 2005,我认为全文搜索不会在您进行事务时看到更改。请查看此帖子https://blog.stackoverflow.com/2008/11/sql-2008-full-text- search-problems/,当提到 sql server 2008 现在可以处理全文搜索的事务时,这在前一段时间给 SO 造成了一些问题。

于 2009-03-10T04:32:20.797 回答