Entity Framework and AsNoTracking
- در entity framework مسولیت track (پیگیری ) , object ها با DbContext/Object Context می باشد و یادمان باشد هر تغییری که روی دیتابیس انجام دهیم ، اگر saveChanges() را فراخوانی نکنیم ، تغییر در دیتابیس رقم نمی خورد.
- وقتی ما یک entity را بازیابی میکنیم از دیتابیس ، entitiy framework بررسی میکنه و تغییرات مارو داخل حافظه cache ذخیره میکنه ، وقتیم که متد saveChange() فراخوانی میشه ، تغییرات ذخیره میشه
- بعضی وقت ها هست که ما نیاز نداریم که این اتفاق بیفته و قرار نیست که تغییر در دیتابیس ایجاد کنیم ، مثلا وقتی که بخوایم فقط چند تا جدولو نمایش بدیم که در این شرایط میایم از AsNoTracking() استفاده می کنیم که در این صورت دیگه entity framewrok نماید چیزیو cache کنه و خب این برای performance خیلی خوب و حیاتیه
- using(Entities context = new Entities())
- {
- var employee = context.Employees.AsNoTracking().ToList();
- var employee2 = context.Employees
- .Where(p => p.EmployeeId >= 3)
- .AsNoTracking().ToList();
- }