以下代码:
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 应该能够将全文查询保留在事务范围内。