EF Core中的三層應用程序中的自動遷移

asp.net-core asp.net-mvc c# entity-framework-core

我在Asp.net Mvc Core中有三層應用程序並使用EF核心,現在我想創建自動遷移,

我有DAL層,我的上下文可以在這裡找到

 public class AdminContext : DbContext
    {

    public AdminContext(DbContextOptions<AdminContext> options) : base(options)
    {

    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<AdsAdsCategory>()
             .HasKey(bc => new { bc.AdsId, bc.AdsCategoryId });

        modelBuilder.Entity<AdsAdsCategory>()
            .HasOne(bc => bc.Ads)
            .WithMany(b => b.AdsAdsCategories)
            .HasForeignKey(bc => bc.AdsId);

        modelBuilder.Entity<AdsAdsCategory>()
            .HasOne(bc => bc.Category)
            .WithMany(c => c.AdsAdsCategories)
            .HasForeignKey(bc => bc.AdsCategoryId);
    }

    public DbSet<Ads> Adses { get; set; }
    public DbSet<AdsCategory> AdsCategories { get; set; }
    public DbSet<AdsPosition> AdsPositions { get; set; }
    public DbSet<AdsCustomer> AdsCustomers { get; set; }
}

並在我的應用程序啟動

我寫這段代碼

var context = app.ApplicationServices.GetService<AdminContext>();

       if (!context.Database.EnsureCreated())
            context.Database.Migrate();

當我運行應用程序數據庫時創建並生成表但__migrationhistory不存在且遷移未生成,

在啟動時我刪除此行代碼

 if (!context.Database.EnsureCreated())

創建了數據庫並生成了__migrationhistory表,但我的模型表沒有生成,

我怎麼能解決這個問題?並在三層應用程序中在EF Core中運行自動遷移?

一般承認的答案

EF核心中不存在EF6中的自動遷移。您必須在開始之前生成遷移,然後再使用

context.Database.Migrate();

或者在每次啟動和使用時丟棄整個數據庫

context.Database.EnsureCreated();

重新創建更新的數據庫。第二個不允許您稍後添加任何遷移,因此您每次都必須重新創建整個數據庫。要刪除數據庫,您可以使用

context.Database.EnsureDeleted();


Related

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