Sobes.tech
Middle

Как зарежда Entity Framework съществата в базата данни?

sobes.tech AI

Отговор от AI

Entity Framework зарежда същности в базата данни, като създава SQL заявки за вмъкване, актуализиране или изтриване на данни въз основа на промените, проследявани в контекста на данните, и ги изпълнява.

Процесът включва:

  1. Проследяване на промените: DbContext следи състоянието на всяка същност (Added, Modified, Deleted, Unchanged).
  2. Генериране на команди: Въз основа на проследените промени Entity Framework генерира съответните SQL команди (INSERT, UPDATE, DELETE).
  3. Изпълнение на командите: Генерираните команди се изпращат към базата данни и се изпълняват.

Пример за запазване на добавена същност:

// Създаване на контекст за данни
using (var context = new MyDbContext())
{
    // Създаване на нова същност
    var newUser = new User { Name = "Иван" };

    // Добавяне на същността към контекста
    context.Users.Add(newUser);

    // Запазване на промените в базата данни
    context.SaveChanges();
}

В този пример context.SaveChanges() инициира процеса на запазване. EF генерира SQL заявка от тип INSERT INTO Users (Name) VALUES ('Иван'); и я изпълнява в базата данни.

При актуализиране на същност:

using (var context = new MyDbContext())
{
    // Получаване на същност
    var userToUpdate = context.Users.Find(1);

    // Промяна на свойство
    userToUpdate.Name = "Петр";

    // Запазване на промените
    context.SaveChanges();
}

Тук SaveChanges() инициира генерирането и изпълнението на SQL заявката UPDATE Users SET Name = 'Петр' WHERE Id = 1;.

При изтриване на същност:

using (var context = new MyDbContext())
{
    // Получаване на същност
    var userToDelete = context.Users.Find(2);

    // Премахване на същността от контекста
    context.Users.Remove(userToDelete);

    // Запазване на промените
    context.SaveChanges();
}

SaveChanges() в този случай ще генерира и изпълни SQL заявката DELETE FROM Users WHERE Id = 2;.

Entity Framework Core също поддържа пакетното запазване (batch saving), когато няколко операции INSERT, UPDATE, DELETE се обединяват в един или няколко пакета за по-ефективно изпращане към базата данни. Това зависи от доставчика на базата данни и неговите възможности.