CodeShot
Seniorسختی 3 از ۵· در 20٪ مصاحبه‌های این حوزه پرسیده شده

تفاوت کوئری Tracking و AsNoTracking چیست و کِی از هرکدام استفاده می‌کنید؟

نشان کردن

پاسخ کوتاه

در حالت Tracking، EF Core تغییرات Entity را برای SaveChanges بعدی رصد می‌کند؛ AsNoTracking این سربار را حذف می‌کند و برای کوئری‌های فقط‌خواندنی سریع‌تر است.

پاسخ کامل

استفاده از AsNoTracking در اندپوینت‌های GET که فقط داده نمایش می‌دهند و قرار نیست ذخیره شوند، می‌تواند کارایی را به‌طور محسوسی بهبود دهد چون EF Core دیگر نیازی به نگه‌داشتن نسخهٔ اصلی Entity برای مقایسه ندارد.

مثال کد

csharp\nvar users = await db.Users.AsNoTracking().ToListAsync();\n