Sobes.tech
Middle

Трек дар Entity Framework чист?

sobes.tech AI

Ҷавоб аз AI

Гирифтани (Entity Tracking) — механизм дар Entity Framework Core мебошад, ки тағиротҳоро дар объектҳои шахсият, ки аз базаи додаҳо бор карда шудаанд, пайгирӣ мекунад. Муқоиса маълумотҳоро дар бораи ҳолати ҳар як шахсият ва метавонад дар вақти нигоҳ доштани тағирот (DbContext.SaveChanges()) дархостҳои SQL барои навсозии базаи додаҳоро тавлид кунад.

Ҳолатҳои асосии шахсият:

  • Added: Шахсият ба контекст илова шудааст, аммо ҳанӯз дар базаи додаҳо вуҷуд надорад.
  • Unchanged: Шахсият аз базаи додаҳо бор карда шудааст ва хосиятҳои он тағир наёфтаанд.
  • Modified: Баъзе хосиятҳои шахсият аз вақти бор кардан дар базаи додаҳо тағир ёфтаанд.
  • Deleted: Шахсият барои хориҷ кардан аз базаи додаҳо ишора шудааст.
  • Detached: Шахсият аз ҷониби контекст пайгирӣ намешавад.

Ба таври пешфарз, шахсиятҳо ҳангоми кор бо дархостҳои LINQ пайгирӣ мешаванд. Ин имкон медиҳад, ки Entity Framework тавонад автоматӣ муайян кунад, ки кадом тағиротҳо бояд нигоҳ дошта шаванд.

Масалан барои нишон додани пайгирии равшан:

// Дархости пайгиришаванда
var trackedUser = context.Users.FirstOrDefault(u => u.Id == 1);

// Дархости бе пайгирӣ
var untrackedUser = context.Users.AsNoTracking().FirstOrDefault(u => u.Id == 2);

Хомӯш кардани пайгирӣ бо AsNoTracking() метавонад дар иҷрои дархостҳо суръатро беҳтар кунад, агар ба нигоҳ доштани тағирот дар базаи додаҳо ниёз набошад, зеро EF манбаъҳоро барои пайгирии ҳолати шахсиятҳо сарф намекунад.