我們在應用程式中更改了一些邏輯,現在我們在遷移中添加了一些欄位,但現有條目也應該獲得一些值。因此,我們需要加載條目,計算一些值并需要將此值添加到新欄位中。那么如何訪問請求的資料Sql-Method呢?AddColumn-Method 的 defaultValue-Flag 將不起作用,因為每個條目的計算值都不同。
這里有某種作業流程:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<uint>(
name: "Field",
table: "Table",
type: "INTEGER",
nullable: false,
defaultValue: 0u);
var builder = migrationBuilder.Sql("SELECT * FROM Table");
var data = builder.AccessData; // here I′m unsure how to access the data
data.Field = Calculator(data);
migrationBuilder.UpdateData(data); // this one is also not cleare
}
uj5u.com熱心網友回復:
AMigrationBuilder是一種以流利、C# 友好的方式表達將在遷移程序中執行的 SQL 代碼的方法。即使您撰寫的代碼和遷移工具生成的“中間檔案”看起來像 C#,最終遷移變成純 SQL,既不知道也無法與您的應用程式通信。
因此,如果您需要處理現有資料,您的所有邏輯都必須發生在 DB 端,并且必須表示為MigrationBuilder. 當然,在遷移的方法Up和Down方法中,您可以利用 C# 的所有功能來構建要提供給migrationBuilder.Sql(...). 此外,考慮到整個遷移是在事務中執行的,并且“易失性”存盤程序可能對提取復雜的遷移邏輯很有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/459622.html
