次のコード:
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を使用しているので、SQL Serverは全文クエリをトランザクションスコープに保持できるはずです。