C# 如何在生产中使用迁移,而不是在测试中使用迁移?

C# 如何在生产中使用迁移,而不是在测试中使用迁移?,c#,unit-testing,azure-functions,ef-core-3.0,C#,Unit Testing,Azure Functions,Ef Core 3.0,我在生产环境(和开发环境)中有一个sql db,但我希望在测试中使用内存。在我的类构造函数中,我调用了dbcontext.database.migrate(),但内存中的数据库不喜欢这样。如果我把它从构造函数中取出,我的测试就可以工作,但是我不知道把它放在哪里让生产代码使用它 构造函数: public ParseAndRefreshDealerData(DbContextExtensions dbContext, IAzureStorage azureStorage) {

我在生产环境(和开发环境)中有一个sql db,但我希望在测试中使用内存。在我的类构造函数中,我调用了
dbcontext.database.migrate()
,但内存中的数据库不喜欢这样。如果我把它从构造函数中取出,我的测试就可以工作,但是我不知道把它放在哪里让生产代码使用它

构造函数:

public ParseAndRefreshDealerData(DbContextExtensions dbContext, IAzureStorage azureStorage)
    {
        _dbContext = dbContext;
        _azureStorage = azureStorage;
    }
有什么建议吗?

您最终可以使用扩展方法作为跳过
Migrate
调用的标准,例如

if (!dbContext.Database.IsInMemory())
    dbContext.Database.Migrate();

您需要某种标志来禁止测试的迁移调用。如果您使用的是Visual Studio,那么您应该能够使用DEBUG build配置,通过
#ifndef DEBUG
指令来执行此操作。我想我已经尝试过了,但没有找到它。不得在项目中包含依赖项。