從遷移中排除DbContext以避免Context-Parameter

asp.net-core asp.net-core-mvc database-migration ef-code-first entity-framework-core

我正在使用帶有MySQL的ASP.NET EF Core(Pomelo.EntityFrameworkCore.MySql驅動程序)。導致這樣的上下文需要一些特定配置的行,默認的DbContext與MSSQL沒有,我創建了一個MySqlContext:

public class MySqlContext : DbContext {
    string connectionString;
    // ...
}

所以我的所有DbContex都繼承自這些類:

public class MyDbContext: MySqlContext {
    public DbSet<MyModel> MyModels{ get; set; }
    // ...
}

在我的項目中,我目前有一個包含DbSets的上下文(DbContext)。還有MySqlContext,它不是這樣的真實上下文,因為它沒有DbSets,只是作為MySQL配置的包裝器,所以我可以更好地重用它們。

但似乎遷移會將它們視為兩種不同的上下文,因為當我使用命令Add-Migration Test我收到了錯誤

找到了多個DbContext。指定要使用的是哪一個。對PowerShell命令使用'-Context'參數,對dotnet命令使用'--context'參數。

所以在每次遷移時我都要在命令中添加-Context MyContext 。我想避免這種情況,因為我說第二個MySqlContext不是一個包含模型和遷移的真實上下文。有沒有辦法告訴遷移工具?我需要像EF模型的[NotMapped]屬性,它告訴EF:不要將此屬性存儲到數據庫。像這樣我需要告訴EF:忽略MySqlContext類,因為它們不需要遷移。

一般承認的答案

使基類抽象:

public abstract class MySqlContext : DbContext {
    string connectionString;
    // ...
}

熱門答案

Use-DbContext MyContext命令將MyContext設置為用於PowerShell會話的默認上下文。這是另一種避免每次都必須指定-Context



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow