1. Entity Framework Nima?


Tranzaksiyalarni boshqarish



Yüklə 113,77 Kb.
səhifə17/17
tarix28.04.2023
ölçüsü113,77 Kb.
#107514
1   ...   9   10   11   12   13   14   15   16   17
1. Entity Framework Nima

4. Tranzaksiyalarni boshqarish.

Entity Framework dagi SaveChanges() metodi qo‘shish, o‘zgartirish, o‘chirishda tranzaksiyani amalga oshiradi. C# ilovasida biz tranzaksiyalarni ham nazorat qilamiz. Tranzaksiyalarni qo‘lda boshqarish qachon foydali bo‘lishi mumkin? Tranzaksiyalar ketma-ketlikni amalga oshirish maqsadida ishlatiladi va tranzaksiyalar har qanday xato bilan yakunlanganda orqaga qaytish imkoniyatiga ega bo‘lishi uchun yuqori mustahkamlikka ega bo‘lishi kerak.


Tranzaksiyani yaratish uchun var transaction = db.Database.BeginTransaction() ifodasi ishlatiladi va DbContextTransaction klassi IDisposable interfeysini amalga oshirganligi sababli, tranzaktsiyaning barcha kodi using konstruktoriga olinadi.
Ma’lumotlar bazasi tranzaksiyalar bajarilgandan so‘ng tranzaksiya commiti uchun transaction.Commit() metodi chaqiriladi.
Misolni ko‘rib chiqaylik:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

using(UserContext db = new UserContext())
{
db.Database.Log = Console.Write;
using (var transaction = db.Database.BeginTransaction())
{
try
{
db.Database.ExecuteSqlCommand(@"UPDATE People SET Age=Age+1 WHERE Name = ’Sam’");
db.People.Add(new Person { Age = 34, Name = "Bob" });
db.SaveChanges();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
}
}
foreach(Person p in db.People.ToList())
Console.WriteLine("Name: {0} Age: {1}",p.Name, p.Age);
}

Bunday holda, db.Database.ExecuteSqlCommand va db.SaveChanges() metodi ikki xil tranzaksiyani aniqlaydi. Biroq, bu metodlarning ikkalasini ham using (var transaction = db.Database.BeginTransaction()) blokiga olinadi, chunki bu metodlarning ikkalasi ham bitta tranzaksiyaga qo‘shiladi. Agar db.Database.ExecuteSqlCommand chaqiruvi muvaffaqiyatsiz bo‘lsa, db.SaveChanges() chaqiruvi amalga oshirilmaydi.
Masalan, parallelizm yoki o‘zgartirish yoki qo‘shishda boshqa istisnolardan tashqari, ya’ni tranzaksiyalardan biri (yoki ikkalasi ham) muvaffaqiyatsiz tugasa, ular umuman ma’noga ega bo‘lmaydi. Shuning uchun transaction.Rollback() metodi yordamida barcha o‘zgarishlarni qaytarish kerak bo‘ladi.

.
Yüklə 113,77 Kb.

Dostları ilə paylaş:
1   ...   9   10   11   12   13   14   15   16   17




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə