我正在使用带有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类,因为它们不需要迁移。
答案 0 :(得分:6)
使基类抽象:
public abstract class MySqlContext : DbContext {
string connectionString;
// ...
}
答案 1 :(得分:2)
Use-DbContext MyContext
命令会将MyContext
设置为用于PowerShell会话的默认上下文。这是另一种避免每次都必须指定-Context
的方法。