راه های افزایش سرعت و پرفرمنس Entity Framework
———————————
این باعث میشه که ChangeTracker غیر فعال بشه و برای مواقع Select نمایشی به درد میخوره.
db.Configuration.AutoDetectChangesEnabled = false;
———————————
این درستور هم اخر کوئری هاتون میتونین بنویسید. کار همین بالایی رو انجام میده
db.Users.Select(p => p).AsNoTracking();
———————————
این درستور Validation اعتبارسنجی توکار EF رو غیر فعال میکنه. زمانی از این استفاده کنین که از صحت اطلاعاتتون مطمئن هستید.
db.Configuration.ValidateOnSaveEnabled = false;
———————————
استفاه از Skip و Take جهت صفحه بندی هم باید حواستون باشه
———————————
دونستن فرق بین IQueryable و IEnumerable و اینکه چگونه ازشون استفاده کنیم هم خیلی مهمه (نکته : تمامی فیلتر های where رو قبل از .ToList انجام بدید)
http://www.dotnettips.info/Post/473
———————————
فقط فیلد هایی که نیاز دارین رو توی Select بیارین نه همه فیلد ها
db.Users.Select(p => new { p.Id, p.Username, p.Fullname });
———————————
از چندین dbContext استفاده نکنیم. از الگوی One Context Per Request استفاده کنیم.
———————————
استفاده به جا از Eager loading و Lazy loading هم خیلی مهمه
http://www.dotnettips.info/post/840
———————————
در تراکنش های بالا هر از چندگاهی Context مون رو Dispose کنیم و یا Context جدید ایجاد کنیم. به دلیل ذخیره شدن تمام تراکنش ها در حافظه در تراکنش های بالا با مشکل کمبود حافظه و کندی سرعت مواجه میشوید
———————————
برای افزودن تعداد رکور بالا به صورت همزمان بهتره از BulkInsert استفاده کنین
چندین پلاگین برای اینکار وجود داره. از جمله :
EntityFramework.BulkInsert
EntityFramework.Extended
EntityFramework.Utilities
که بهترین اون ها EntityFramework.BulkInsert هست
http://goo.gl/hXxLvI
———————————
منابع :
https://goo.gl/QW2CBW
http://goo.gl/1ACSwA
http://goo.gl/15ArJO