خطای Connection attempt failed در Load میلیونها رکورد از دیتابیس توسط EF
سلام خسته نباشین ، من شبیه به پروژه Asp.net core 3 که تو سایتتون ارایه کردین در حال نوشتن یه پروژه شبیه به همین پروژه هستم
من به دلیل این که دیتابیسم نزدیک به 10 میلیون رکورد داره فراخوانی کویری هایم با متد Get زمان بر هست
و بعد از چند ثانیه با ارور
An unhandled exception occurred while processing the request.
SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
مواجه میشم و بعضی از مواقع هم درست کار میکنه
از قابلیت async Task , await هم استفاده کردم که این 2 خودشون ارور میدن موقع اضافه کردن
ممنون میشم کمک کنین
List<Tbl_Data_Sim> sim09 = _context._data_SimUW.Get(a => a.Mobile == mobile, null, "").ToList();
ممنون از پاسخ دهی سریعتون
استفاده از متد Take برای واکشی محدود اطلاعات در انتیتی فریم ورک
اما در مورد سوال شما، ببینید واکشی حدود 10 میلیون رکورد قطعا فشار زیادی به سرور و دیتابیس میاره و منابع سیستمی زیادی رو مصرف میکنه که باعث Crash کردن سیستم یا hang کردن سیستم به صورت طولانی میشه. اگر شما قصد دارید اطلاعاتتون رو نمایش بدید قطعا کاربر نیاز نداره به طور همزمان 10 میلیون رکورد رو ببینه.
بنابراین می تونید توسط دستور زیر مثلا 1000 رکورد آخر رو واکشی کنید و اگر کاربر نیاز داشت اطلاعات دیگه ای رو ببینه براش قابلیت جستجو بذارید و در هر بار جستجو هم نهایتا 1000 رکورد رو واکشی کنید.
List<Tbl_Data_Sim> sim09 = _context._data_SimUW.Get(a => a.Mobile == mobile, null, "").ToList().Take(1000);
استفاده از برنامه نویسی ناهمزمان Async
اگر فکر می کنید که عملیاتی دارید که ممکنه بار زیادی روی سرور بذاره و یا اطلاعات زیادی میخواید واکشی کنید برای جلوگیری از ایجاد مکث یا هنگ در سیستم می تونید تابع خودتون رو به صورت ناهمزمان تعریف کنید:
public async Task<IActionResult> Index()
{
var myVar = _context.TableName.ToListAsync();
}
کد بالا به صورت نمونه نوشته شده. شما هم کافیه کدهاتون رو با توجه به دستورات بالا تغییر بدید.
به نظر خودم با توجه به اینکه می فرمایید حدود 10 میلیون رکورد دارید استفاده از Take بهتر باشه.
ضمنا بهتره سوالتون رو با جزییات کامل بپرسید و به نرم افزار یا آموزش دیگه ای ارجاع ندید چون ممکنه بازدیدکنندگان سوال شما اون آموزش رو ندیده باشن
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2