مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

hossein adelian

عضویت از 1394/02/25

استفاده از Eager Loading یا Lazy Loading ???

  • یکشنبه 18 بهمن 1394
  • 10:18
تشکر میکنم

سلام، وقت بخیر

من دارم با وب فرم یه سایت مینویسم که توی یکی از پنل هام میخوام لیست کاربرای سایتمو نمایش بدم (مثلا حدود 1000 نفر) و بنده از خاصیت Paging استفاده نمیکنم و همشون یکجا لیست میشن(از انتیتی فرم ورک 6 استفاده میکنم)
و توی این لیست هام باید 2 تا جدول جوین بشن که اصلاعات یوزرهام و رشته هاشون هستن

بنظر شما بنده از Eager Loading استفاده کنم یا Lazy Loading ؟؟

اگه امکانش هست دلیلشم بگید wink

پاسخ های این پرسش

تعداد پاسخ ها : 1 پاسخ
کاربر سایت

سمیه حاتمی

عضویت از 1394/06/24

  • یکشنبه 18 بهمن 1394
  • 16:55

سلام

همان طور که میدانید EF با استفاده از Navigation Property  ها و همچنین کلمه virtual در حین ساخت کلاس یک کلاس پراکسی ایجاد می کند که با کمک این کلاس می تواند عمل Lazy Loading و یا eager Loading را انجام دهد .برای درک بهتر فکر می کنم مثال زیر کمک کننده باشد .فرض کنید دو کلاس customer و order داریم این دو کلاس رابطه یک به چند با یکدیگر دارند .به کد زیر توجه کنید

 var customers = context.Customers.Include(c => c.Orders);
        //var customers = context.Customers.Include("Orders");
        foreach (var customer in customers)
        {
            Console.WriteLine("Customer Name: {0}, Customer Family: {1}", customer.Name, customer.Family);
            foreach (var order in customer.Orders)
            {
                Console.WriteLine("\t Order Date: {0}", order.Date);
            }
        }

در داخل حلقه دوم به ازای هر مشتری یک کوئری به بانک می زنیم و اطلاعات سفارش مربوط به این مشتری را لود می کنیم .این کار Lazy Loading است .حال کد زیر را ببینید

        var customer = context.Customers.First(c => c.Family == "Jamshidi");
 
        context.Entry(customer).Collection(c => c.Orders).Load();
 
        foreach (var order in customer.Orders)
        {
            Console.WriteLine(order.Date);
        }
    }
}

در این روش کلیه اطلاعات را با EagerLoading  و با یک بار کوئری زدن از دیتا بیس خوانده ایم .

در مورد شما فکر می کنم که استفاده از Eager loading بهتر باشد چون هم صفحه view خلوت تر و زیباتری خواهید داشت و همچنین حجم کوئری های شما پایین خواهد آمد .

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)