کش شدن کوئری های Dapper


زمانی که از Dapper برای خواندن اطلاعات, افزودن اطلاعات و ... استفاده میکنید, در کتابخانه Dapper کوئری نوشته شده شما در یک ConcurrentDictionary نگهداری میشود که اگر مجددا همان کوئری اجرا شد, پروسس لازم برای اجرای کوئری مجدد اجرا نشود. ....
ادامه مطلب

حذف کردن async await


به طور معمول متدهایی که به صورت async نوشته میشوند, از متدهای sync سریعتر اجرا نمیشوند و فقط باعث میشوند که سیستم بتواند به ریکوئست های بیشتری پاسخ بدهد. در مطلب نحوه کار Thread pool این موضوع ارائه شد. همچنین در سایت sharplab.io میتوانید کدهایی که به صورت async نوشته میشوند را مشاهده کنید. ....
ادامه مطلب

در پروداکشن به خط خطا نباید اطمینان کرد


چند روز پیش توی یکی از پروژه ها که کار میکردم روش, یک خطای Object reference not set to an instance of an object صادر میشد و خطی که خطا صادر شده بود توی لاگها خط 61 بود. وقتی خط 61 رو چک کردم اصلا امکان خطا وجود نداشت, فقط یک کلاس نمونه سازی شده بود در خط 61. ....
ادامه مطلب

ایجاد یک Interceptor برای پیدا کردن کوئری های کند در EntityFramework Core


در این مطلب میخواهیم یک Interceptor ایجاد کنیم برای پیدا کردن کویری هایی که بیشتر از 2 ثانیه طول میکشند. برای پیاده سازی باید یک کلاس ایجاد کنیم که از کلاس DbCommandInterceptor ارث بری کند. کلاس DbCommandInterceptor در EF Core 3 و یا ورژن های بالاتر قرار دارد ....
ادامه مطلب

تفاوت AsNoTracking و AsNoTrackingWithIdentityResolution


در Entity Framework هر زمان یک یا چند رکورد را از دیتاها را از دیتابیس میخوانیم, به طور پیشفرض توسط ChangeTracker ردیابی میشوند. و همین امر باعث میشود مقداری کاهش پرفرمنس داشته باشیم. اگر نخواهیم که Entity Framework این عملیات ردیابی موجودیت ها ....
ادامه مطلب