使用.net Core修復數據庫數據的正確方法是什麼?

ef-migrations entity-framework entity-framework-core seeding

我們必須在當前數據庫中添加一些行。我的老闆告訴我使用遷移(我們有一個.net核心應用程序,並使用EF核心1.1.1)。我不確定如何繼續,我理解遷移是“數據庫模式修改”的事情,而不是“數據更新”的事情。我知道種子也存在,但我認為它們是“第一次/原始數據填充”,要在項目中完成一次,而不是在任何隨機時刻。那麼,我應該使用種子還是應該使用遷移?是否存在簡單數據操作的遷移?或者有第三種正確的方法嗎?

一般承認的答案

看起來最常見的方法是在Up遷移中使用純SQL - 請參閱有關Data Motion / Custom SQL的文檔

關於堆棧溢出已有類似的建議,請參閱實體框架 - 遷移 - 代碼優先 - 每次遷移的種子以及在Entity Framework 4.3中逐步種子數據的最佳方法

在執行初始種子時,您可以在Configuration.cs覆蓋Seed方法,請參閱此處


熱門答案

您可以創建自己的向上/向下覆蓋,並告訴它根據需要使用T-SQL創建或插入。這將是一個沒有進行架構更改的遷移。雖然下來會刪除那些種子項目。

public partial class InsertMigrationRows10 : Migration
{
    protected override void Up( MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql("INSERT INTO SOMETHING(xx, xx, xx)", suppressTransaction: false);
    }
    protected override void Down(MigrationBuilder migrationBuilder)
    {
        //reverse what ever you did in UP
       migrationBuilder.Sql("DELETE SOMETHING ...."); 
    }
}

我想這就是你要找的東西。和Update-Database (PMC)調用是必要的,以使其運行。 dotnet ef database update否則來自項目目錄中的。當然記住我不知道這是否也是最好的解決方案。



Related

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