سلام، وقت بخیر
من دارم با وب فرم یه سایت مینویسم که توی یکی از پنل هام میخوام لیست کاربرای سایتمو نمایش بدم (مثلا حدود 1000 نفر) و بنده از خاصیت Paging استفاده نمیکنم و همشون یکجا لیست میشن(از انتیتی فرم ورک 6 استفاده میکنم)
و توی این لیست هام باید 2 تا جدول جوین بشن که اصلاعات یوزرهام و رشته هاشون هستن
بنظر شما بنده از Eager Loading استفاده کنم یا Lazy Loading ؟؟
اگه امکانش هست دلیلشم بگید
سلام
همان طور که میدانید 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 خلوت تر و زیباتری خواهید داشت و همچنین حجم کوئری های شما پایین خواهد آمد .
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)