我有一个共享模型,用于创建SqlServer和SQLite数据库。我在每个模型类中添加了Table属性并提供了一个模式:
[Table("Sites", Schema = "Common")]
当我使用context.Database.Migrate()
迁移SQLite数据库时,出现NotSupportedException错误。我知道SQLite不支持模式,所以我想知道在迁移期间是否有一种简单的方法可以忽略模式属性?
答案 0 :(得分:1)
在代码中而不是按属性设置架构。这样您就可以使用一些方法/配置来确定架构,例如:
public class MyContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
if(UsingSqlLite)
{
modelBuilder.Entity<Site>().ToTable("Sites");
}
else
{
modelBuilder.Entity<Site>().ToTable("Sites", "Common");
}
}
//snip
}
答案 1 :(得分:0)
由于您在SQL Server和SQLite上使用相同的迁移,因此您可能需要忽略迁移中的模式。
protected override void Up(MigrationBuilder migrationBuilder)
{
if (migrationBuilder.ActiveProvider == "Microsoft.EntityFrameworkCore.Sqlite")
{
migrationBuilder.CreateTable(
name: "Sites",
...);
}
else
{
migrationBuilder.CreateTable(
name: "Sites",
schema: "Common",
...);
}
}