مشاور و مدرس برنامه نویسی در حوزه دات نت - https://github.com/mjebrahimi
دات نت 5 و 5 ASPNET Core و EFCore 5 پیش نمایش 3 منتشر شد
این آپدیت با چند تغییر کاربردی و مهم همراه بود که الان با هم بررسیشون میکنیم. بقیه تغییراتشون اکثرا بهبود و رفع باگ بوده یا موارد low level و غیر مهم.
1️⃣ مشکل ReferenceLoopHandling مربوط به System.Text.Json حل شد ✌️
2️⃣ چند extension متد روی HttpClient اضافه شده که مستقیما خروجی Json رو Deserialize میکنه ?
برای استفاده از این متد ها نیازه پکیج زیر رو نصب کنین
PM> Install-Package System.Net.Http.Json
مثال یه درخواست GET که خروجی Json میده و میخوایم به لیستی از Person ها Deserialize اش کنیم
return await client.GetJsonAsync<List<Person>>("/api/people");
3️⃣ و سرانجام بلاخره قابلیت Filter کردن Include ها به EFCore اضافه شد. (هرچند زودتر باید میشد ولی بازم دمشون گرم خیلی لازم بود✌️)
تا قبل از این نسخه امکان اینکه روی فیلد های چیزی که Include میکنیم شرط بذاریم وجود نداشت. در نتیجه اگه لازم بود فقط 2 رکورد از 100 رکورد موجود رو Include کنیم نمیشد و همش باید از دیتابیس واکشی میشد که این قضیه سرباز بسیار زیادی داشت.
برای حل این مشکل چندین راه حل وجود داشت:
1- واکشی اطلاعات به صورت دستی در قالب یه Type دلخواه و شرط گذاری روی اونها
2- استفاده از Projection موجود در AutoMapper روی EFCore
3- و بهترین راه اینکه از متد IncludeFilter کتابخونه زیر که مال شرکت ZZZ هست استفاده کنیم
PM> Install-Package Z.EntityFramework.Plus.EFCore
این کتابخونه رایگانه (با اون یکی نسخه که پولیه اشتباهش نگیرین) و امکانات بسیار خوبی میده و شخصا برای پروژه های واقعی و بزرگ پیشنهادش میکنم. اگه به جا ازش استفاده بشه تاثیر زیادی روی پرفرمنس پروژه میزاره (پیشنهاد میکنم حتما داکیومنتش رو بخونین)
واقعا کمبود این قابلیت خیلی حس میشد تا اینکه بلاخره توی این آپدیت به EFCore اضافه شد و حالا میتونیم براحتی ازش استفاده کنیم
var blogs = context.Blogs
.Include(e => e.Posts.Where(p => p.Title.Contains("Cheese")))
.ToList();
اطلاعات بیشتر:
- Announcing .NET 5.0 Preview 3
- ASP.NET Core updates in .NET 5 Preview 3
- Announcing Entity Framework Core 5.0 Preview 3
? کانال دات نت زوم
مطلبی دیگر از این انتشارات
اشتباهات رایج در استفاده از Async/Await + راه حل
مطلبی دیگر از این انتشارات
آموزش Microservices در ASP.NET Core (سری اول)
مطلبی دیگر از این انتشارات
اهمیت Side-effect Free و Idempotency در کدنویسی