دسته بندی ها
11:05 1403/12/22

کندی نمایش اطلاعات با ردیف های زیاد در انتیتی فریم ورک (EF Core)

مشخصات سوال کننده :
کاربر : hamdola     امتیاز کاربر : 121     رتبه کاربر : 12
دسته بندی : Asp.net Core Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 521
پاسخ دهنده : fateme 12:40 1403/12/23

کند شدن نمایش اطلاعات با حجم زیاد در Asp.net core

چند تا راه حل به شما میگم که امیدوارم به درد شما بخوره.

  • استفاده از دستور Take در انتیتی فریم ورک

راه حل اول استفاده از دستور take هست. توسط این دستور شما می تونید تعداد مشخصی از ردیف ها رو از دیتابیس فراخوانی کنید و نمایش بدید. قطعا کاربر شما در لحظه به 10 میلیون رکورد نیازی نداره. بنابراین چه لزومی هست که 10 میلیون رکورد رو واکشی کنید. شما می تونید مثلا 1000 رکورد آخر رو واکشی کنید و نمایش بدید. حالا کاربر اگر به هر رکورد دیگه ای نیاز داشته باشه با جستجو می تونه رکورد مورد نظرش رو پیدا کنه. (دقت کنید در هر بار جستجو هم حداکثر 1000 رکورد واکشی میشه و سرعت پروژه افت نمیکنه.)

var query = _context.users.ToList().Take(1000);

این راه حل بنظرم بهترین راه حل در خیلی از موارد باشه.

 

  • استفاده از قابلیت های IEnumerable و IQueryable

توی انتیتی فریم ورک دو تا دستور به نام IEnumerable و IQueryable داریم که برای واکشی اطلاعات از دیتابیس استفاده میشن. دستور IQueryable دستورات انتیتی فریم ورک رو میبره و داخل خود Sql Server اجرا میکنه و فقط نتیجه رو برمیگردونه و از این رو سرعت بهتری داره. توصیه میشه حتما این لینک رو مطالعه کنید. (تفاوت بین IEnumerable و IQueryable)

var query = _context.users.ToList().IQueryable();

 

  • استفاده از Dapper

dapper یک ORM بسیار سبک و سریع هست که اجازه میده دستورات شما به راحتی در Sql مثل یه SP اجرا بشن و سرعت بالایی رو براتون به ارمغان میارن. از این ORM میتونید برای کار با داده های خیلی بزرگ هم استفاده کنید و سرعت لود اطلاعات افزایش چشمگیری داره. بنابراین راه حل سوم شما هم استفاده از Dapper هست.

 

نکته : راه حل های تخصصی تری هم برای کار با داده های بزرگ هست ولی برای پروژه شما که آماده هم هست همین روش ها معقول تره.

ویرایش شده در پنج شنبه 23 اسفند 1403 ساعت 12:48:42
به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود