Linq to sql 为什么在事务范围内调用SQL Server 2008中的全文搜索失败?

Linq to sql 为什么在事务范围内调用SQL Server 2008中的全文搜索失败?,linq-to-sql,sql-server-2008,full-text-search,transactions,user-defined-functions,Linq To Sql,Sql Server 2008,Full Text Search,Transactions,User Defined Functions,以下代码: var foo = Users.Join( tvf_SearchUsers(queryString), u => u.User_Id, s => s.User_Id, (u, s) => u); 根据使用全文搜索的表值函数(tvf_SearchUsers)选择与查询字符串匹配的用户。此代码段是一个更大的方法的一部分,该方法在生产中使用时可

以下代码:

var foo = Users.Join(
                tvf_SearchUsers(queryString),
                u => u.User_Id,
                s => s.User_Id,
                (u, s) => u);
根据使用全文搜索的表值函数(tvf_SearchUsers)选择与查询字符串匹配的用户。此代码段是一个更大的方法的一部分,该方法在生产中使用时可以成功地工作。但是,当我调用与MBUnit测试相同的方法时(该测试具有rollback属性),搜索无法返回预期的结果。如果删除rollback属性,它将正常工作。单元测试创建虚拟用户等,然后通过回滚清除这些用户。表值函数似乎看不到这些创建的项,就好像它不在事务范围内一样。有人知道怎么避开这件事吗

已更新


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

这可能是由于全文搜索/事务组合。如果是sql 2005,我认为在事务下进行全文搜索时不会看到更改。查看这篇文章,有人提到sql server 2008现在可以在全文搜索上处理事务,这在不久前导致了一些问题。

感谢链接,很有趣。。。事实上,我是在和2008年比赛。我现在做的很多事情都会在以后改用lucene之类的东西,所以这也不是现在的选择。我只需要一个简单的hack就可以让我的单元测试重新工作。