دسته بندی ها
15:44 1399/11/03

نحوه پیاده سازی Left Join در انتیتی فریم ورک چگونه است ؟

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : Asp.net Core سی شارپ Entity Framework

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2945
هوش مصنوعی

پاسخ هوش مصنوعی

برای پیاده سازی Left Join در Entity Framework، می توانید از روش GroupJoin به همراه SelectMany استفاده کنید. این روش به شما این امکان را می دهد که تمام رکوردهای جدول سمت چپ (جدول اصلی) را انتخاب کنید و در صورت وجود رکوردهای مرتبط از جدول سمت راست، آن ها را به ازای هر رکورد از جدول سمت چپ ملحق کنید.

کد شما با استفاده از Left Join به صورت زیر خواهد بود:

var query = from p in _context.Product_Tbl
             join pg in _context.ProductGroups_Tbl on p.ProductID equals pg.ProductID into pgGroup
             from pg in pgGroup.DefaultIfEmpty() // اینجا Left Join اجرا می شود
             where p.IsActive == true
             select new ProductListForSearchViewModel()
             {
                  ProductID = p.ProductID,
                  ProductImage = p.ProductImage,
                  ProductTitle = p.ProductTitle,
                  PackagePrice = p.PackagePrice
              }; 

با استفاده از into و DefaultIfEmpty()، اگر هیچ رکوردی در جدول ProductGroups_Tbl برای یک ProductID خاص وجود نداشته باشد، مقدار pg null خواهد بود و رکورد Product_Tbl به تنهایی برمی گردد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 19:25 1399/11/03

نحوه پیاده سازی Left Join در انتیتی فریم ورک

برای اینکه بتونید در کوئری خودتون در انتیتی فریم ورک از عبارت Left Join استفاده کنید باید از متد DefaultIfEmpty استفاده کنید. خب روش کار رو در کوئری خودتون انجام میدم. کوئری شما به صورت زیر میشه که عبارت Left Join هم توش پیاده سازی شده.

var Query = (from p in _context.Product_Tbl
             join pg in _context.ProductGroups_Tbl on p.ProductID equals pg.ProductID
             //ایجاد لفت جوین 
             into pgr from m in pgr.DefaultIfEmpty()
             //
             where p.IsActive == true
             select new ProductListForSearchViewModel()
             {
                  ProductID = p.ProductID,
                  ProductImage = p.ProductImage,
                  ProductTitle = p.ProductTitle,
                  PackagePrice = p.PackagePrice
              });

بنابراین در کوئری شما عبارت زیر اضافه شد

into pgr from m in pgr.DefaultIfEmpty()

 

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود