作爲遷移我需要修改在一列中的某些現有的數據的一部分,但是這個更新必須使用C#代碼被轉換:數據必須被讀入到C#,改性,然後推回到數據庫。EF遷移 - 遷移期間修改現有數據W/C#業務邏輯
這些更改只能在此遷移過程中發生一次。 (因此,即使我檢查MigrationHistory表,也有可能在Seed方法中有條件地應用此數據更新,因爲可以一次應用多個遷移,並且在稍後遷移後不會發生此更新。)
我在遷移過程中無法使用純ADO.NET,因爲Up()
方法僅構建框架將在稍後執行的操作,並且此修改依賴於遷移本身中的架構更改。 (即:vanilla ADO.NET調用會過早發生)。
我覺得最理想的方法是在框架的實際腳本執行過程中有條件地注入BL,但這個可擴展點是不提供。
我試着做這一切在一個單一的遷移,但香草ADO.NET代碼被稱爲* *之前,任何在'向上()'方法之前,它的架構修改的。我考慮過第二次遷移,但我主要嘗試避免進行3次遷移(在自定義BL運行後需要更多修改)。 – JoeBrockhaus
當我在'Seed()'方法的上下文中提到「在特定遷移過程中只有一次」。由於我無法保證數據庫在運行時的版本(即:在TargetMigration + 3之後無法運行),因此我無法在其中執行修改。 – JoeBrockhaus
我們最終只使用了一次遷移,並推遲了模式更改。一些架構的變化是使數據恢復事件壞變換遇到,但我們還是決定放棄,由於這是一個不太可能的邊緣情況下(在這種情況下,無論如何) – JoeBrockhaus