بهبود پارامترسازی کوئریها در Entity Framework Core 9.0
نویسنده: وحید نصیری
تاریخ: ۱۴۰۳/۱۲/۲۷ ۱۴:۲۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
EF.Parameter<T> است. var posts = context.Posts.Where(p => p.Title == ".NET Blog" && p.Id == id);
".NET Blog" بهصورت ثابت در آن قرار دارد، اما id پارامترسازی میشود. این رفتار باعث میشود پلنهای اجرایی متعددی در حافظه کش شوند که مصرف CPU و حافظه را افزایش میدهد.EF.Parameter<T>EF.Parameter<T> این مشکل را حل کرده است. این متد به توسعهدهندگان اجازه میدهد مقادیر ثابت را بهصورت پارامتر درآورند. جالیا در مقاله خود مثالی ارائه میدهد:async Task<List<Employee>> GetEmployees(int employeeId)
{
return await context.Employees
.Where(e => e.Id == employeeId && e.IsActive == EF.Parameter(true))
.ToListAsync();
}employeeId و true پارامترسازی میشوند:SELECT [e].[Id], [e].[IsActive] FROM [Employees] AS [e] WHERE [e].[Id] = @__employeeId_0 AND [e].[IsActive] = @__p_1
EF.Constant<T>EF.Constant<T> در EF Core 8.0، برعکس این حالت عمل میکند و پارامترها را به ثابت تبدیل میکند. برای مثال:.Where(e => e.Id == EF.Constant(employeeId) && e.IsActive == EF.Parameter(true))
EF.Parameter<T> گامی مهم در جهت بهینهسازی کوئریها برداشته است. این ویژگی به توسعهدهندگان .NET امکان میدهد کنترل بیشتری بر پارامترسازی داشته باشند و عملکرد برنامههای خود را بهبود بخشند. با وجود نیاز به تغییرات دستی در کد، مزایای آن از جمله کاهش مصرف منابع و افزایش کارایی، ارزش این تلاش را دارد.