mmbguide
پنج شنبه 19 فروردین 1400, 00:34 صبح
سلام
یک ViewModel دارم که باید بصورت زیر پیاده سازی بشه:
Public class ShowGroupViewModel
{
public int GroupID { get; set; }
public string GroupTitle { get; set; }
public int PageCount { get; set; }
}
متدی که باید فیلدها ViewModel را مقدار دهی بکنه بصورت زیر پیاده سازی شده:
public IEnumerable<ShowGroupViewModel> GetGroupsForView()
{
return db.PageGroups.Select(p => new ShowGroupViewModel()
{
GroupID = p.GroupID,
GroupTitle = p.GroupTitle,
PageCount = p.Pages.Count()
});
}
اما برنامه در خطی که p.Pages.Count() نوشته شده خطای زیر ار نمایش می دهد:
The specified type member is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported
مشکل در استفاده از متد Count هستش چون متد بالا اگر بصورت زیر پیاده سازی بشه درست کار میکنه و خطایی نمیده:
public IEnumerable<ShowGroupViewModel> GetGroupsForView()
{
return db.PageGroups.Select(p => new ShowGroupViewModel()
{
GroupID = p.GroupID,
GroupTitle = p.GroupTitle,
PageCount = db.Pages.Count(n => n.GroupID == p.GroupID)
});
}
لطفا راهنمایی کنید که چرا امکان استفاده از Count در حالت اول وجود نداره ولی با ارجاع به Context و دسترسی به جدول مورد نظر میشه خروجی را مطابق پیاده سازی دوم بدست آورد. آیا روش دوم در Performance برنامه اثر منفی میذاره؟
ممنون اگر توضیح بدهید
یک ViewModel دارم که باید بصورت زیر پیاده سازی بشه:
Public class ShowGroupViewModel
{
public int GroupID { get; set; }
public string GroupTitle { get; set; }
public int PageCount { get; set; }
}
متدی که باید فیلدها ViewModel را مقدار دهی بکنه بصورت زیر پیاده سازی شده:
public IEnumerable<ShowGroupViewModel> GetGroupsForView()
{
return db.PageGroups.Select(p => new ShowGroupViewModel()
{
GroupID = p.GroupID,
GroupTitle = p.GroupTitle,
PageCount = p.Pages.Count()
});
}
اما برنامه در خطی که p.Pages.Count() نوشته شده خطای زیر ار نمایش می دهد:
The specified type member is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported
مشکل در استفاده از متد Count هستش چون متد بالا اگر بصورت زیر پیاده سازی بشه درست کار میکنه و خطایی نمیده:
public IEnumerable<ShowGroupViewModel> GetGroupsForView()
{
return db.PageGroups.Select(p => new ShowGroupViewModel()
{
GroupID = p.GroupID,
GroupTitle = p.GroupTitle,
PageCount = db.Pages.Count(n => n.GroupID == p.GroupID)
});
}
لطفا راهنمایی کنید که چرا امکان استفاده از Count در حالت اول وجود نداره ولی با ارجاع به Context و دسترسی به جدول مورد نظر میشه خروجی را مطابق پیاده سازی دوم بدست آورد. آیا روش دوم در Performance برنامه اثر منفی میذاره؟
ممنون اگر توضیح بدهید