ورود

View Full Version : سوال: مشکل در Include چند سطحی



abasfar
چهارشنبه 03 دی 1393, 12:55 عصر
با سلام
من کلاس زیر را دارم

public class MenuModel
{
public int MenuId { get; set; }
public string MenuName { get; set; }
public virtual ICollection<MenuModel> MenuChildren { get; set; }
public virtual MenuModel MenuParent { get; set; }
}


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


using (var db = new ContextDB())
{
items = db.MenuModels.Where(x => x.MenuParent == null && x.MenuIsActive )
Include(x => x.MenuChildren)
.ToList();
}


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

parvizwpf
چهارشنبه 03 دی 1393, 13:42 عصر
شما اگه اینکلود نذاری چی میشه؟

parvizwpf
چهارشنبه 03 دی 1393, 13:52 عصر
این رو هم مطالعه فرمایید 'شاید' کمک کنه:
http://stackoverflow.com/questions/7508241/ef-code-first-how-to-load-related-data-parent-child-grandchild

abasfar
چهارشنبه 03 دی 1393, 14:26 عصر
با توجه به اینکه متغییر virtual است برای اینکه تو دیتابیس ذخیره نشه و پس باید یک جوری داده لود بشه دیگه Include استفاده کردم

تو لینکی که شما دادید همین کد را نوشه فقط تو ان کد دو کلاس داریم با رابطه اما اینجا من یک کلاس با رابطه تودرتو دارم

parvizwpf
چهارشنبه 03 دی 1393, 14:31 عصر
منظورتون از این جمله رو نفهمیدم:

با توجه به اینکه متغییر virtual است برای اینکه تو دیتابیس ذخیره نشه و پس باید یک جوری داده لود بشه دیگه Include استفاده کردم
کد شما رو بدون اینکلود زدم تمام داده ها لود میشوند.