چه تکنولوژی می‌خواهید یاد بگیرید؟

نظرات و انتقادات خود را با ما در میان بگذارید

آپدیت روزانه

بیش از 1500 مطلب آموزشی

نیازهای روز

خروجی کوئری‌های Entity Framework

در ادامه با نحوه دریافت خروجی کوئری‌های Entity Framework با زبان سی شارپ آشنا خواهید شد. در این چند روز در حال کار و بهینه سازی کوئری‌های مربوطه Entity Framework، و پیاده سازی متدی برای پشتیبانی از FullTextSearch در Entity Framework CodeFirst مشغول کدنویسی بودم، برای تست و مشاهده کوئری‌های ایجاد شده توسط Entity Framework بر روی مدل BreakPoint قرار می‌دادم و با بردن موس بر روی اون مقدار کوئری رو در فایل Notepad کپی میکردم و نتیجه رو مشاهده، تست و مورد برسی قرار میدادم. اما در جای از برنامه نیاز پیدا کردم چگونه امکان دارد کوئری‌های مربوطه رو در یک متغییر قرار داده و در نهایت به عنوان گزارش در دیتابیس ذخیره کنم، که در ادامه با نحوه دریافت کوئری آشنا خواهید شد.

code-first

مقدمه:

یکی از مهمترین ابزارهای که در برنامه‌ها بهمراه دیتابیس استفاده خواهد شد ابزارهای ORM یا Object Relational Mapping است. این ابزارها قابلیتی در اختیار شما قرار خواهند داد که در برنامه قادر خواهید بود با بانک اطلاعاتی و جدول‌ها به صورت شی(Object) استفاده کنید که  NHibernate و Entity Framework CodeFirst مهمترین آنها به حساب می‌آیند. در این مقاله با نحوه دریافت خروجی کوئری Entity Framework آشنا خواهید شد.

نحوه دریافت کوئری:

  1. دریافت کوئری با استفاده از BreakPoint
  2. دریافت کوئری با استفاده از عمل Cast

دریافت کوئری با استفاده از BreakPoint:

 در برنامه قبل از اینکه بخواید مدل را ()ToList کنید، روی مدل BreakPoint بگذارید و پروژه را به حالت دیباگ (Debug) اجرا کرده و لازم است اکشن متد انتخابی فراخوانی نمود.

entity framework-generated query

 در نهایت موس رو بر روی مدل قرار دهید تا کوئری نمایش داده شود و مقادیر رو انتخاب و در فایل Notepad کپی کنید نتیجه نهایی به صورت زیر خواهد بود:

{SELECT 
    [Extent1].[Id] AS [Id],
    [Extent1].[RegisterDateTime] AS [RegisterDateTime],
    [Extent1].[SystemIp] AS [SystemIp],
    [Extent1].[User_Id] AS [User_Id],
    [Extent1].[PageLink] AS [PageLink],
    [Extent1].[ReportText] AS [ReportText],
    [Extent1].[ImagePath] AS [ImagePath],
    [Extent1].[Browser] AS [Browser],
    [Extent1].[Browser_Version] AS [Browser_Version],
    [Extent1].[Email] AS [Email],
    [Extent1].[Visible] AS [Visible],
    [Extent1].[Status] AS [Status],
    [Extent1].[Language] AS [Language]
    FROM [dbo].[Reports] AS [Extent1]
    WHERE [Extent1].[Id] = @p__linq__0}

 برای تست کوئری، مقدار کپی شده را در SQL Server اجرا کنید با این تفاوت که لازم است "{" و "}" در ابتدا و انتهای کد برداشته شود.

 نکته: در صورتی که نیاز به کوئری نویسی پیچیده دارید می‌توانید از Entity Framework Code First استفاده کنید و مقدار کوئری خروجی رو به SQL Server انتقال دهید.

دریافت کوئری با استفاده از عمل Cast:

 در صورتی که نیاز باشد کد کوئری در جاهایی از برنامه در دیتابیس ذخیره شود می‌توان از کد زیر جهت دریافت نتیجه نهایی خروجی استفاده شود:

using (var context = newnorthwindEntities())
{
   context.Database.Log = Console.Write;
   var result = (from r in context.Products select r);
// روش اول
   //string str = (((System.Data.Objects.ObjectQuery)result).ToTraceString());
// روش دوم
   string str = (((DbQuery<Product>)result).ToString());
   Console.WriteLine(str);
}

مآخذ:

امید نصری

0 نظر:

تعداد دیدگاه‌های کاربران : 0 دیدگاه
مهمان گرامی! برای ارسال نظر نیاز است وارد سایت شوید.


You must log on to comment.