CREATE DATABASE statement not allowed within multi-statement transaction

后端 未结 5 1551
不知归路
不知归路 2021-02-13 22:40

I\'m trying to build a quick test that deletes and recreates a database every time it runs. I have the following:

[TestClass]
public class PocoTest
{
    privat         


        
5条回答
  •  执笔经年
    2021-02-13 23:08

    In case anyone else runs into this issue:

    In my Repository class, I have another definition of what's commonly labeled a "dbContext" - ProjectDataSource. This means that one context was created in my test class, while another was created in my Repository object. Sending the connectionstring to my repo class solved the problem:

    In Repository:

    public class Repository : IRepository
        {
            private readonly ProjectDataSource _db;
    
            public Repository(string connectionString)
            {
                _db = new ProjectDataSource(connectionString);   
            }
    
            public Repository()
            {
                _db = new ProjectDataSource();   
            }
    

    From my test:

    private TransactionScope _transactionScope;
            private Repository _repository;
            private ProjectDataSource _dataSource; 
            private const string _connectionString = "Data Source=.;Initial Catalog=test_db;Trusted_Connection=True";
    
            [TestInitialize]
            public virtual void TestInitialize()
            {
                _repository = new Repository(_connectionString);
                _dataSource = new ProjectDataSource(_connectionString);
                _dataSource.Database.Delete();
                _dataSource.Database.CreateIfNotExists();
                _transactionScope = new TransactionScope();
            }
    

提交回复
热议问题