Asp.net

如何在程式碼優先遷移中強制刪除並重新創建選定表?

  • October 28, 2020

我想刪除一個包含一千列的表並讓遷移重新創建它。我可以發出一個

   DropTable("MyTableWithManyColumns");

但問題是我會像這樣手動創建表

   CreateTable(
           "dbo.MyTable",
           c => new
               {
                   RowId = c.Int(nullable: false, identity: true),
                   // many columns follow...
               })
           .PrimaryKey(t => t.RowId);

更簡單的方法是使用 SSMS 並右鍵點擊將創建表拖放到新視窗並從那裡執行。

但是有沒有使用程式碼遷移的簡單方法?

我可以看到兩種可能的方式:

  1. 從數據庫中刪除表
  2. 生成一個新的遷移(使用Add-Migration)。將生成創建缺失表的新遷移
  3. 執行遷移(使用Update-Database

或者

  1. 從上下文中刪除實體(記得刪除與其他實體的所有關係)
  2. 使用生成遷移Add-Migration(它將生成刪除表方法)
  3. 使用執行遷移Update-Database
  4. 將實體添加到上下文
  5. 使用生成一個新的遷移Add-Migration(它將生成一個創建表方法)
  6. 使用執行遷移Update-Database

希望能幫助到你!

引用自:https://stackoverflow.com/questions/34267155