1
  • 我有一个 3 层 MVC4 应用程序 - Web > Services > Core。
  • 我正在使用 EF Codefirst
  • 数据上下文和迁移文件夹位于核心中
  • 我想重复使用这些,但使用不同的数据库进行测试
  • 我在解决方案中添加了另一个名为“Tests”的项目 - 我正在尝试创建另一个项目来调用一些服务并使用测试数据库来验证所有 CRUD 操作是否按预期运行。
  • 我从 Web 复制app.config到 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