Sobes.tech
Middle

Ինչպե՞ս է Entity Framework-ը բեռնում օբյեկտները տվյալների բազայում:

sobes.tech AI

Պատասխան AI-ից

Entity Framework-ը բազայի տվյալների մեջ բեռնում է էնտիտիները՝ կազմելով SQL հարցումներ՝ տվյալների ներմուծում, թարմացում կամ հեռացում՝ հիմնվելով փոփոխությունների վրա, որոնք հետևում է տվյալների կոնտեքստում և կատարում դրանց։

Ընթացքը ներառում է՝

  1. Փոփոխությունների հետևում: DbContext-ը հետևում է յուրաքանչյուր էնտիտի վիճակին (Ավելացված, Թարմացվող, Հեռացված, Չփոփոխված):
  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 ('Իվան'); և executes այն տվյալների բազայում:

Փոփոխության թարմացման դեպքում՝

using (var context = new MyDbContext())
{
    // Էնտիտին գտնում է
    var userToUpdate = context.Users.Find(1);

    // Փոփոխում է հատկությունը
    userToUpdate.Name = "Պետրոս";

    // Փոփոխությունները պահպանում է
    context.SaveChanges();
}

Այստեղ SaveChanges() ստեղծում և executes է 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 գործողություններ միավորվում են մեկ կամ մի քանի բաքետների մեջ՝ ավելի արդյունավետ ուղարկելու համար տվյալների բազա։ Դա կախված է տվյալների բազայի պրովայդերից և նրա հնարավորություններից։