PDA

View Full Version : سوال: کاربرد Include چیست



Iran58
سه شنبه 22 اسفند 1396, 11:48 صبح
سلام
var persons = db.Persons.Include(h => h.Status).Include(h => h.Sex);
کاربرد Includeدر بالا چسیت و ایا همان join است
وInclude بهتر است یا join
باتشکر

ali_md110
سه شنبه 22 اسفند 1396, 14:47 عصر
بله همون join هست و به eager loading مشهور هست
فرض کنیم دو جدول با هم ارتباط دارند مثلا جدول Parentو جدول Child
کوئری زیر بر روی جدول Child باعث میشه رکوردهای جدول Child واکشی بشه


var persons = db.Childs;

اگر بعد از این دستور بخواهیم به ردیف اول نتیجه این کوئری و فیلد PrentName از جدول Parent دسترسی پیدا کنیم کافیه بنویسیم


var persons = db.Childs;
var p=persons.FirstOrDefault().Parent.ParentName

با اینکار دو دستور به سمت اسکیول سرور ارسال میشه یکی برای واکشی رک.ردهای جدول Child و دیگری جدول Parent و این به Lazy Loading مشهور هست
فرض کنیم 100 تا رکورد در جدول Child بود و خواستیم درون یک حلقه به ParentName های تمام این 100 تا رکورد دسترسی داشته باشیم باید اینجوری بنویسیم




var persons = db.Childs;
foreach(var c in persons )
{
var p=c.Parent.ParentName
}

با اینکار 101 کوئری به سمت اسکیول سرور ارسال میشه مثل بمب افکن و این یک فاجعه هست
برای جلوگیری از ارسال 101 کوئری و اینکه فقط یک کوئری ارسال بشه از Include استفاده میکنیم



var persons = db.Incude(x=> x.Parent).Childs;
foreach(var c in persons )
{
var p=c.Parent.ParentName
}