دو شنبه 8 آبان 1396 - 10:38
برای بازیابی اطلاعات با Entity Framework از AsNoTracking استفاده کنید(مشکلات NET. :بخش بیست و یکم)
هنگام بازیابی اطلاعات با Entity Framework از AsNoTracking استفاده کنید
حل مشکلات دات نت | آموزش برنامه نویسی
متد AsNoTracking چیست؟
- درصورتیکه ما تغییراتی روی دادهها نداشته باشیم و یا از روشهای غیر متصل از موجودیتها استفاده کنیم با استفاده از متد AsNoTracking() در زمان و حافظه سیستم صرف جویی میکنیم در این حالت موجودیتهای فراخوانی شده از دیتابیس در سیستم ردگیری DbContext قرار نمیگیرند و اگر وضعیت آنها را بررسی کنیم در وضعیت Detached قرار دارند.
در بسیاری از موارد، داده های بازیابی شده توسط Entity Framework در محدوده DBContext اصلاح نمی شود.ASP.NET MVC یا ASP.NET MVC API از این نمونه ها هستند.
با این حال، اگر از راه پیش فرض بازیابی اطلاعات استفاده می کنید، Entity Framework همه چیز را آماده می کند تا قادر به شناسایی تغییرات موجودات بازیابی شده خود باشد تا این تغییرات را در پایگاه داده ادامه دهند. این کار عملکرد را بالا برده و در مصرف حافظه صرفه جویی می کند.
کد زیر یک روش معمولی برای بازیابی داده ها است:
var products = db.Products.Where(p => p.InStock).ToList();
روش بهتراین است که از AsNoTracking متد System.Data.Entity Namespace استفاده کنید:
var products = db.Products.Where(p => p.InStock). AsNoTracking().ToList();