迁移期间忽略SQLite的架构属性?

时间:2016-10-04 14:01:22

标签: c# entity-framework-core

我有一个共享模型,用于创建SqlServer和SQLite数据库。我在每个模型类中添加了Table属性并提供了一个模式:

[Table("Sites", Schema = "Common")]

当我使用context.Database.Migrate()迁移SQLite数据库时,出现NotSupportedException错误。我知道SQLite不支持模式,所以我想知道在迁移期间是否有一种简单的方法可以忽略模式属性?

2 个答案:

答案 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",
            ...);
    }
}