如何在迁移中使用两个不同的数据库>配置 - 一个用于Web,一个用于测试?

时间:2013-02-21 23:51:29

标签: asp.net-mvc asp.net-mvc-3 entity-framework asp.net-mvc-4

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

我不确定为什么要尝试创建新数据库。我该如何开始排除故障?

0 个答案:

没有答案