При работе с базами данных нередко возникает необходимость заполнить те или иные таблицы начальными значениями. Штатный механизм миграций в EntityFramework Core позволяет это сделать.
Для того чтобы добавить запись в ранее созданную таблицу следует воспользоваться методом InsertData класса ModelBuilder. Ниже приведён простой пример его вызова с комментариями.
migrationBuilder.InsertData( table: "Categories", // Название таблицы columns: new[] { "CategoryName" }, // Массив с названиями полей, в которые вносятся значения values: new object[] { "Услуги" }); // Массив значений для полей
Более наглядный пример для нескольких полей:
migrationBuilder.InsertData( table: "Clients", // Название таблицы columns: new[] { "ClientName", "ClientLastName", "Phone"", "CategoryId" }, // Массив с названиями полей, в которые вносятся значения values: new object[] { "Иван", "Иванов", "80001234567", 1 }); // Массив значений для полей
Добавление данных можно поместить в ту же миграцию, которая создаёт таблицу после создания таблицы, необходимых связей и т.д. Пример такой миграции:
namespace DataAccess.Data.Migrations { public partial class Categories : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Categories", columns: table => new { Id = table.Column<int>(nullable: false, type: "INT IDENTITY(1,1)"), CategoryName = table.Column<string>(nullable: false) }, constraints: table => { table.PrimaryKey("PK_Categories", x => x.Id); }); migrationBuilder.InsertData( table: "Categories", columns: new[] { "CategoryName" }, values: new object[] { "Автомобили" }); migrationBuilder.InsertData( table: "Categories", columns: new[] { "CategoryName" }, values: new object[] { "Книги" }); migrationBuilder.InsertData( table: "Categories", columns: new[] { "CategoryName" }, values: new object[] { "Мебель" }); migrationBuilder.InsertData( table: "Categories", columns: new[] { "CategoryName" }, values: new object[] { "Услуги" }); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable("Categories"); } } }
Также при необходимости можно создать отдельную миграцию и выполнить добавление данных в ней.
После того как миграция, которая содержит добавление начальных данных будет выполнена, эти данные появятся в соответствующих таблицах.