Я пытаюсь выполнить вторую миграцию, используя Entity Framework, и до сих пор я генерировал код, подобный этому
namespace Entity.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class LedgerDisplayOrder : DbMigration
{
public override void Up()
{
AddColumn("Ledgers", "DisplayOrder", c => c.Int());
// Hic sunt leones
}
public override void Down()
{
DropColumn("Ledgers", "DisplayOrder");
}
}
}
Логика c как заполнить этот столбец на самом деле довольно проста, в SQL это будет что-то вроде следующего:
ALTER TABLE [Ledgers] ADD [DisplayOrder] INT NULL;
UPDATE [Ledgers]
SET DisplayOrder = 10
WHERE [Id] = 26 OR [Id] = 27 OR [Id] = 23;
UPDATE [Ledgers]
SET DisplayOrder = 20
WHERE [Id] = 29 OR [Id] = 9;
UPDATE [Ledgers]
SET DisplayOrder = 30
WHERE [Id] = 28 OR [Id] = 23;
Другими словами, миграция должна автоматически заполняться во время миграции, но я не уверен, что поставить на // hic sunt leones
, чтобы добиться именно этого. Я прочитал, что должен использовать класс igrationBuilder , вероятно, что-то вроде
migrationBuilder.InsertData(table: "ledger", column: "DisplayOrder", value: "10");
, но как реализовать предложение WHERE
? И как мне загрузить этот класс? My Visual Studio *1014* Быстрые действия и рефакторинг * постоянно предлагает реализовать новый класс, поэтому мне сначала нужно что-то установить?
Любая помощь приветствуется!
Ссылки: все Я обнаружил, что пока речь идет об установке значений по умолчанию для нового столбца. Это не то, что мне нужно.