Table of contents
Open Table of contents
Въведение
Цел на упражнението
Запознаване с работа с база данни чрез Entity Framework (EF Core) и неговата интеграция в C# проекти.
Задачите в упражнението изграждат:
- Малка студентска информационна система
В това упражнение:
- Създаване на база данни и свързване с EF Core
- Записване и четене на потребители от база данни
Очакван резултат
Ще създадем възможност да съхраняваме потребители директно в база данни, вместо статично в кода.
Задачи за домашна работа
- Добавяне на Logger, който да записва логове директно в базата данни.
- Създаване на меню в приложението за избор на операции с потребители:
- Преглед на всички потребители
- Добавяне на нов потребител (въвеждане на име и парола)
- Изтриване на съществуващ потребител (по име)
Важни концепции
- Entity Framework (EF Core)
- Работа с база данни
- ORM (Object-Relational Mapping)
- SQLite
- LINQ
Зареждане на проект в Visual Studio
- Отворете Visual Studio.
- Заредете Solution-а от предишните упражнения.
- Създайте нов проект с име
DataLayer. - Добавете референция към
Welcome:
- Десен бутон върху Dependencies на
DataLayer→Add Project Reference… - Изберете проекта
Welcome.
Разширяване на проекта DataLayer
Създаване на папки
- В
Solution Explorer→ десен бутон върхуDataLayer→Add→New Folder. - Създайте следните папки:
DatabaseModel
Добавяне на външни библиотеки (NuGet)
- Десен бутон върху
Dependencies→Manage NuGet Packages… - Инсталирайте следните пакети:
Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqliteMicrosoft.EntityFrameworkCore.Tools
Създаване на клас DatabaseUser
- В папка
Model→Add→New Item…→Class→DatabaseUser.cs. - Класът трябва да наследява
UserотWelcomeи да добавиIdс override:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
public class DatabaseUser : User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public override int Id { get; set; }
}
Създаване на клас DatabaseContext
- В папка
Database→Add→New Item…→Class→DatabaseContext.cs. - Добавете следния код:
using Microsoft.EntityFrameworkCore;
public class DatabaseContext : DbContext
{
public DbSet<DatabaseUser> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Data Source=users.db");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<DatabaseUser>().HasData(
new DatabaseUser { Id = 1, Username = "Admin", Password = "admin", Role = UserRole.Administrator, Expires = DateTime.UtcNow.AddYears(1) }
);
}
}
Навързване на кода в Program.cs
using (var db = new DatabaseContext())
{
db.Database.EnsureCreated();
db.Users.Add(new DatabaseUser { Username = "User1", Password = "123", Role = UserRole.Student });
db.SaveChanges();
var users = db.Users.ToList();
Console.WriteLine("Потребители в базата:");
foreach (var user in users)
{
Console.WriteLine($"ID: {user.Id}, Username: {user.Username}, Role: {user.Role}");
}
}
Добавяне на функционалност за вход
- Добавете възможност за вход чрез конзолата:
Console.Write("Enter username: ");
string username = Console.ReadLine();
Console.Write("Enter password: ");
string password = Console.ReadLine();
using (var db = new DatabaseContext())
{
var user = db.Users.FirstOrDefault(u => u.Username == username && u.Password == password);
if (user != null)
Console.WriteLine("Валиден потребител!");
else
Console.WriteLine("Невалидни данни!");
}
Заключение
След изпълнението на тези стъпки ще имаме конзолно приложение, което работи с Entity Framework Core, позволявайки запис, четене и удостоверяване на потребители.
Бележка: В следващи упражнения ще добавим логване на действия в база данни и графичен интерфейс.