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

spu*_*ett 3 c# unit-testing azure-functions ef-core-3.0

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

Constructor:

public ParseAndRefreshDealerData(DbContextExtensions dbContext, IAzureStorage azureStorage)
    {
        _dbContext = dbContext;
        _azureStorage = azureStorage;
    }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Iva*_*oev 5

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

if (!dbContext.Database.IsInMemory())
    dbContext.Database.Migrate();
Run Code Online (Sandbox Code Playgroud)