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
Необхідні NuGet пакети для установки в проект
Кроки
Крок 1: Створення моделі
Щоб створити таблицю даних, потрібно створити модель для правильної конфігурації стовпців таблиці.
Клацніть правою кнопкою на папку Models > Add > Class…
Створення класу моделі
Моя модель називатиметься Animal і міститиме Id, Name, Weight та MaxAge. Я також використаю Data Annotations для явного визначення ключа таблиці, хоча вони можуть також використовуватися для валідації.
Клас моделі
Крок 2: DbContext
Щоб використовувати Entity Framework для створення таблиці, потрібно розширити клас DbContext, створивши підклас.
Створіть нову папку під назвою Data, клацнувши правою кнопкою на проект > Add > New Folder.
Потім потрібно створити новий клас. Клацніть правою кнопкою на новостворену папку Data > Add > Class…
У цьому новому класі потрібно успадкувати від DbContext, а потім у конструкторі передати DbContextOptions до успадкованого класу.
Новий підклас
Далі потрібно додати властивість для створення таблиці даних. Додамо властивість типу DbSet, де типом буде наша модель, а ім'я — це ім'я нашої таблиці в базі даних.
Крок 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);
}
Повний клас ApplicationDbContext
Крок 4: Налаштування рядків підключення
Щоб підключитися до SQL Server, ми додамо рядок підключення до файлу appsettings.json.
У JSON-файлі додайте секцію ConnectionStrings і додайте властивість під назвою Default.
Додавання ConnectionStrings до файлу AppSettings JSON
Щоб додати ваш рядок підключення SQL Server, додайте ваш ServerName до цього шаблону Server=[SERVER NAME];Database=[DATABASE NAME];Trusted_Connection=True;TrustServerCertificate=True
Ім'я сервера SQL Server
Рядок підключення
Крок 5: Реєстрація ApplicationDbContext
Ми майже готові, але перед тим, як рухатися далі, потрібно редагувати файл Program.cs, щоб зареєструвати файл ApplicationDbContext, щоб ми могли використовувати всю логіку, яку ми написали до цього. Ми також передамо класу параметри для SQL Server та рядок підключення, який ми щойно додали до файлу AppSettings.JSON.
builder.Services.AddDbContext(o => o.UseSqlServer(builder.Configuration.GetConnectionString(“Default”)));
Цей рядок додасть ApplicationDbContext і налаштує DbContextOptions для використання SQL Server, а потім передасть рядок підключення, який ми створили.
Оновлений Program.cs
Крок 6: Останній крок
Тепер ми готові використовувати консоль керування пакетами, щоб створити та заповнити цю таблицю.
Це двоступеневий процес. Перший крок — це “add-migration”, який зкомпілює всі зміни SQL, що включатимуть створення нашої таблиці та її заповнення. Другий крок — це “update-database”, який надішле всі міграції до SQL Server для створення та заповнення таблиці.
Щоб почати, відкрийте меню Інструменти на верхній панелі.
Виберіть Nuget Package Manager > Package Manager Console.
У Package Manager Console вам потрібно додати міграцію “add-migration [YourMigrationName]”, кожна міграція повинна мати назву і не може містити пробілів.
Команда в Package Manager Console
Успішний результат
Тепер, коли ми успішно створили міграцію, потрібно надіслати її для фактичного відображення таблиці в SQL Server. Для цього просто введіть “update-database” і натисніть Enter.
Команда для оновлення бази даних в Package Manager Console
Якщо ви все налаштували правильно, ви побачите повідомлення про завершення, а таблиця має з'явитись та бути заповнена в SQL Server.
Повідомлення про завершення після створення та заповнення таблиці даних
Фінальна таблиця, яку видно в SQL Server
Підсумки
Хоча є кілька кроків, Entity Framework Core дуже плавно обробляє створення та заповнення таблиці даних. Можливість легко маніпулювати даними за допомогою об'єктів через C# швидко дозволяє розробникам C# здійснювати створення, читання, оновлення та видалення з меншою кількістю коду, що призводить до зменшення кількості помилок.
Перекладено з: APS.NET Entity Framework: Creating and Seeding a SQL Server Table