Ինչպե՞ս է Entity Framework-ը բեռնում օբյեկտները տվյալների բազայում:
sobes.tech AI
Պատասխան AI-ից
Entity Framework-ը բազայի տվյալների մեջ բեռնում է էնտիտիները՝ կազմելով SQL հարցումներ՝ տվյալների ներմուծում, թարմացում կամ հեռացում՝ հիմնվելով փոփոխությունների վրա, որոնք հետևում է տվյալների կոնտեքստում և կատարում դրանց։
Ընթացքը ներառում է՝
- Փոփոխությունների հետևում: DbContext-ը հետևում է յուրաքանչյուր էնտիտի վիճակին (Ավելացված, Թարմացվող, Հեռացված, Չփոփոխված):
- Կամանդների ստեղծում: Փոփոխությունների հիման վրա Entity Framework-ը ստեղծում է համապատասխան SQL հրամաններ (INSERT, UPDATE, DELETE):
- Հրամանների կատարում: Ստեղծված հրամանները ուղարկվում են տվյալների բազա և կատարվում:
Նմուշ՝ ավելացված էնտիտին պահելու համար՝
// Տվյալների կոնտեքստի ստեղծում
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 գործողություններ միավորվում են մեկ կամ մի քանի բաքետների մեջ՝ ավելի արդյունավետ ուղարկելու համար տվյալների բազա։ Դա կախված է տվյալների բազայի պրովայդերից և նրա հնարավորություններից։