بررسی ()ToQueryString. و ()Include. در Core5

یکی از مشکلات EF این بود که دستوراتی که درست میکرد را برنامه نویس نمی توانست ببیند اما…

با استفاده از ()ToQueryString. در Entity Framework Core 5.0 که برای برای پرس و جوهای LINQ ارائه می شود، می توانید کوئری که به برای دیتابیس تولید میکند(T-SQL) را مشاهده کنید.

بررسی یه مثال:

public class Person
{
     [Key]
     public int ID { get; set; }
     public string Name { get; set; }
     public List<PersonChild> Childs { get; set; }
}
public class PersonChild 
{            
   [Key]            
   public int CildID { get; set; }            
   public string ChildName { get; set; }        
}

در بالا کلاس person و Child های آن را ساختیم

با استفاده از دستور زیر می توانیم T-SQL که EF برای ما تولید میکند را ببینیم:

var list= db.Persons.Where(r=> r.ID == 1).Include(i => i.Childs).ToQueryString();
دستور بالا یک شخص را با فرزندان  را باز می گرداند

نتیجه این دستور به شکل کوئری زیر است:

SELECT [p].[ID], [p].[Name], [p0].[CildID], [p0].[ChildName], [p0].[PersonID]
FROM [Persons] AS [p]
LEFT JOIN [PersonChild] AS [p0] ON [p].[ID] = [p0].[PersonID]
WHERE [p].[ID] = 1
ORDER BY [p].[ID], [p0].[CildID]

این روش مناسبی است چون فقط یک با به دیتابیس درخواست می دهداما فقط برای رکورد های کمتر از 10تا اما برای رکورد های بیشتر از آن به شدت افت سرعت دارد و بسیار بد است.

نوشته بررسی ()ToQueryString. و ()Include. در Core5 اولین بار در ویرگول پدیدار شد.

گردآوری توسط ایده طلایی

دیدگاهتان را بنویسید