忽略部分db在实体框架代码中设置迁移

时间:2018-01-23 08:32:40

标签: c# entity-framework dbcontext

我有一个问题,有简单的背景:

    public DbSet<Current> Currents { get; set; }
    public DbSet<Event> Events { get; set; }
    public DbSet<ApplicationFile> ApplicationFile { get; set; }

    private readonly string dbPath;

    public SqliteContext(string filePath)
    {
        dbPath = filePath;
    }

    public SqliteContext()
    {
        dbPath = $@"{AppDomain.CurrentDomain.BaseDirectory}\application.db";
        ApplicationFileMigration();
    }

    private void ApplicationFileMigration()
    {
        Database.EnsureCreated();
    }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite($@"Data Source={dbPath}");
    }

我想仅在ApplicationFile实体上创建迁移并忽略Currents和Events,我知道可以使用单独的上下文来完成,但是它是否可以在单个上下文中,某种忽略注释或默认配置?

1 个答案:

答案 0 :(得分:1)

阅读以下内容:Entity Framework Code First Migrations with an existing database

使用迁移的标准方法是首先使用现有模型创建上下文 。然后添加一个迁移,其中忽略实际更改(根据链接文章中的步骤3)

Add-Migration InitialCreate –IgnoreChanges
Update-Database

这将创建迁移历史记录表,并将当前模型标记为已映射。

然后添加您真正想要迁移的其他实体作为第二次迁移。

因此,在您的情况下,首先删除ApplicationFile进行初始迁移,然后重新添加它并创建第二次迁移。它只会为ApplicationFile创建DDL SQL,而不会为其他实体创建