私はこの質問が前に尋ねられていることを認識していますが、実際にはまだ答えが見つかっていません。TransactionScopeとDataContext
私の問題は、私のユニットテストがLinqを使ってデータベースに問い合わせるWebサービスを呼び出そうとしているときに発生します。
ユニットテストがそのようにように設定されています
[TestInitialize]
public void SetUp()
{
var scope = new TransactionScope(TransactionScopeOption.Required,TimeSpan.MaxValue);
var database = new DatabaseDataContext();
}
[TestCleanup]
public void TearDown()
{
scope.Dispose();
database.Dispose();
}
[TestMethod]
public void GetCategoryList_Success()
{
// create test data
var result = service.GetItems();
}
はservice.GetItems方法はとてもようになります:LINQクエリを実行しようとすると
try
{
using (DatabaseDataContext database = new DatabaseDataContext())
{
var items = (from i in database.Items
select i).ToList<Items>();
return items;
}
}
catch (Exception ex)
{
// log error
return null;
}
、次の例外がスローされます。
操作はトランザクションの状態に対して有効ではありません。
これはネストされたトランザクションと関係していると思いますが、テストデータが実際にデータベースに保存されないように、トランザクションをテストクラスに保存しておく必要があります。走る
また、私のホストは共有インスタンス上にあるため、サーバーを直接変更することはできません。
これをそのまま動作させる方法はありますか?あるいは、このコンテキストでTransactionScopeを使用する方法がありますか?