1
  • 3 層の MVC4 アプリケーション (Web > Services > Core) があります。
  • 私はEF Codefirstを使用しています
  • Core に存在するデータ コンテキストと Migrations フォルダー
  • これらを再利用したいのですが、テストには別のデータベースを使用します
  • 「Tests」という別のプロジェクトをソリューションに追加しました。いくつかのサービスを呼び出し、テスト データベースを使用して、すべての CRUD 操作が期待どおりに動作していることを検証する別のプロジェクトを作成しようとしています。
  • app.configWeb から Tests プロジェクトにコピーし、Web 固有のものをすべて削除しました
  • app.configここで、テストで新しいデータベースを指定しました。

Catalog=Project.Services.Tests;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Project.Services.Tests.mdf" providerName="System.Data.SqlClient" />
  </connectionStrings>
  • プロジェクトを正常にビルドしました
  • 次のテストクラスを追加しました。

    [TestClass]
    public class ServiceTest
    {
        private TransactionScope _transactionScope;
        private SetServices _services;
    
        [TestInitialize]
        public virtual void TestInitialize()
        {
            _services = new SetServices();
            _transactionScope = new TransactionScope();
        }
    
        [TestMethod]
        public void AddSet()
        {
            _services.CreateSet("New Set", "Details", null);
        }
    
    
        [TestCleanup]
        public void TestCleanup()
        {
            // rollback
            if (_transactionScope != null)
            {
                _transactionScope.Dispose();
            }
        }
    
    }
    

しかし、実行すると次のようになります。

複数ステートメントのトランザクション内で CREATE DATABASE ステートメントを使用することはできません。

私のCreateSet方法の中で:

 _db.Sets.Add(set);

新しいデータベースを作成しようとしている理由がわかりません。この問題のトラブルシューティングを開始するにはどうすればよいですか?

4

0 に答える 0