APS.NET Entity Framework: Створення та заповнення таблиці SQL Server

Entity Framework Core дає змогу створювати, читати, оновлювати та видаляти таблиці даних без написання SQL-коду. У цій статті ми покроково розглянемо, як використовувати ASP.NET, Entity Framework Core і SQL Server для швидкого створення та заповнення таблиці даних.

Потрібні компоненти

Для того щоб слідувати статті, вам потрібно мати наступне:

  • Visual Studio 2022 — з модулем “ASP.NET and web development”.
  • SQL Server Management Studio, до якого ви можете підключитися.
  • Проект Asp.Net MVC.
  • NuGet пакети:
    > EntityFrameworkCore
    > EntityFrameworkCore.SqlServer
    > EntityFrameworkCore.Tools

pic

Необхідні NuGet пакети для установки в проект

Кроки

Крок 1: Створення моделі

Щоб створити таблицю даних, потрібно створити модель для правильної конфігурації стовпців таблиці.

Клацніть правою кнопкою на папку Models > Add > Class…

pic

Створення класу моделі

Моя модель називатиметься Animal і міститиме Id, Name, Weight та MaxAge. Я також використаю Data Annotations для явного визначення ключа таблиці, хоча вони можуть також використовуватися для валідації.

pic

Клас моделі

Крок 2: DbContext

Щоб використовувати Entity Framework для створення таблиці, потрібно розширити клас DbContext, створивши підклас.

Створіть нову папку під назвою Data, клацнувши правою кнопкою на проект > Add > New Folder.

Потім потрібно створити новий клас. Клацніть правою кнопкою на новостворену папку Data > Add > Class…

pic

У цьому новому класі потрібно успадкувати від DbContext, а потім у конструкторі передати DbContextOptions до успадкованого класу.

pic

Новий підклас

Далі потрібно додати властивість для створення таблиці даних. Додамо властивість типу DbSet, де типом буде наша модель, а ім'я — це ім'я нашої таблиці в базі даних.

pic

Крок 3: Заповнення таблиці

Ми можемо налаштувати все, щоб заповнити таблицю та створити її одночасно, але потрібно продовжувати працювати з файлом ApplicationDbContext, який ми створили.
Щоб прискорити процес, я використав генеративний ШІ для створення фальшивого набору даних, який я буду використовувати.

Animal[] animals = new Animal[]  
{  
 new Animal { Id= 1, Name = “Elephant”, Weight = 6000f, MaxAge = 70 },  
 new Animal { Id = 2, Name = “Lion”, Weight = 190f, MaxAge = 14 },  
 new Animal { Id = 3, Name = “Horse”, Weight = 500f, MaxAge = 30 },  
 new Animal { Id = 4, Name = “Kangaroo”, Weight = 85f, MaxAge = 23 },  
 new Animal { Id = 5, Name = “Penguin”, Weight = 30f, MaxAge = 20 },  
 new Animal { Id = 6, Name = “Giraffe”, Weight = 1200f, MaxAge = 25 },  
 new Animal { Id = 7, Name = “Polar Bear”, Weight = 450f, MaxAge = 25 },  
 new Animal { Id = 8, Name = “Wolf”, Weight = 45f, MaxAge = 16 },  
 new Animal { Id = 9, Name = “Tiger”, Weight = 220f, MaxAge = 26 },  
 new Animal { Id = 10, Name = “Crocodile”, Weight = 1000f, MaxAge = 70 },  
 new Animal { Id = 11, Name = “Parrot”, Weight = 0.9f, MaxAge = 80 },  
 new Animal { Id = 12, Name = “Rabbit”, Weight = 2f, MaxAge = 12 },  
 new Animal { Id = 13, Name = “Tortoise”, Weight = 300f, MaxAge = 150 },  
 new Animal { Id = 14, Name = “Dog”, Weight = 30f, MaxAge = 15 },  
 new Animal { Id = 15, Name = “Cat”, Weight = 4f, MaxAge = 20 },  
 new Animal { Id = 16, Name = “Dolphin”, Weight = 150f, MaxAge = 50 },  
 new Animal { Id = 17, Name = “Shark”, Weight = 1100f, MaxAge = 70 },  
 new Animal { Id = 18, Name = “Cow”, Weight = 750f, MaxAge = 20 },  
 new Animal { Id = 19, Name = “Chicken”, Weight = 2.5f, MaxAge = 10 },  
 new Animal { Id = 20, Name = “Goat”, Weight = 45f, MaxAge = 18 }  
};

Тепер нам потрібно просто перевизначити захищену функцію, щоб передати наші дані.

protected override void OnModelCreating(ModelBuilder modelBuilder)  
{  
 modelBuilder.Entity().HasData(animals);  
}

pic

Повний клас ApplicationDbContext

Крок 4: Налаштування рядків підключення

Щоб підключитися до SQL Server, ми додамо рядок підключення до файлу appsettings.json.

У JSON-файлі додайте секцію ConnectionStrings і додайте властивість під назвою Default.

pic

Додавання ConnectionStrings до файлу AppSettings JSON

Щоб додати ваш рядок підключення SQL Server, додайте ваш ServerName до цього шаблону Server=[SERVER NAME];Database=[DATABASE NAME];Trusted_Connection=True;TrustServerCertificate=True

pic

Ім'я сервера SQL Server

pic

Рядок підключення

Крок 5: Реєстрація ApplicationDbContext

Ми майже готові, але перед тим, як рухатися далі, потрібно редагувати файл Program.cs, щоб зареєструвати файл ApplicationDbContext, щоб ми могли використовувати всю логіку, яку ми написали до цього. Ми також передамо класу параметри для SQL Server та рядок підключення, який ми щойно додали до файлу AppSettings.JSON.

builder.Services.AddDbContext(o => o.UseSqlServer(builder.Configuration.GetConnectionString(“Default”)));

Цей рядок додасть ApplicationDbContext і налаштує DbContextOptions для використання SQL Server, а потім передасть рядок підключення, який ми створили.

pic

Оновлений Program.cs

Крок 6: Останній крок

Тепер ми готові використовувати консоль керування пакетами, щоб створити та заповнити цю таблицю.

Це двоступеневий процес. Перший крок — це “add-migration”, який зкомпілює всі зміни SQL, що включатимуть створення нашої таблиці та її заповнення. Другий крок — це “update-database”, який надішле всі міграції до SQL Server для створення та заповнення таблиці.

Щоб почати, відкрийте меню Інструменти на верхній панелі.
Виберіть Nuget Package Manager > Package Manager Console.

У Package Manager Console вам потрібно додати міграцію “add-migration [YourMigrationName]”, кожна міграція повинна мати назву і не може містити пробілів.

pic

Команда в Package Manager Console

pic

Успішний результат

Тепер, коли ми успішно створили міграцію, потрібно надіслати її для фактичного відображення таблиці в SQL Server. Для цього просто введіть “update-database” і натисніть Enter.

pic

Команда для оновлення бази даних в Package Manager Console

Якщо ви все налаштували правильно, ви побачите повідомлення про завершення, а таблиця має з'явитись та бути заповнена в SQL Server.

pic

Повідомлення про завершення після створення та заповнення таблиці даних

pic

Фінальна таблиця, яку видно в SQL Server

Підсумки

Хоча є кілька кроків, Entity Framework Core дуже плавно обробляє створення та заповнення таблиці даних. Можливість легко маніпулювати даними за допомогою об'єктів через C# швидко дозволяє розробникам C# здійснювати створення, читання, оновлення та видалення з меншою кількістю коду, що призводить до зменшення кількості помилок.

Перекладено з: APS.NET Entity Framework: Creating and Seeding a SQL Server Table

Leave a Reply

Your email address will not be published. Required fields are marked *