نمایش نتایج 1 تا 4 از 4

نام تاپیک: بروز خطا در استفاده از متدهای تجمیعی با استفاده از LINQ

  1. #1
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    بروز خطا در استفاده از متدهای تجمیعی با استفاده از LINQ

    سلام

    یک 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 برنامه اثر منفی میذاره؟

    ممنون اگر توضیح بدهید

  2. #2

    نقل قول: بروز خطا در استفاده از متدهای تجمیعی با استفاده از LINQ

    کدفرست کار میکنید؟
    ساختار جداول به چه صورته؟
    آخرین ویرایش به وسیله Mahmoud.Afrad : یک شنبه 29 فروردین 1400 در 22:34 عصر

  3. #3
    کاربر دائمی آواتار mmbguide
    تاریخ عضویت
    اسفند 1386
    محل زندگی
    منظومه شمسی
    پست
    1,170

    نقل قول: بروز خطا در استفاده از متدهای تجمیعی با استفاده از LINQ

    سلام

    من نام ستون ها را ساده کردم:


    public class Customer
    {
    [Key]
    public int Id { get; set; }
    public string FullName { get; set; }


    public virtual System.Data.Entity.DbSet<Order> Orders { get; set; }
    }


    public class Order
    {
    [Key]
    public int Id { get; set; }
    public int CustomerId { get; set; }
    public string Title { get; set; }


    [ForeignKey("CustomerId")]
    public virtual Customer Customer { get; set; }
    }


    یک جدول مشتری و یک جدول سفارش که ساختار جداول در بانک اطلاعاتی هستند. و در زیر ViewModel هستش که در اجرای دستورات تجمیعی که در پست #1 عنوان شده به مشکل بر میخورم:


    public class ReportViewModel
    {
    public int CustomerId { get; set; }
    public int OrderCount { get; set; }
    }


    در مدل بالا هر زمان که میخوام مقدار OrderCount را با استفاده از Count مقدار دهی کنم (مطابق پست #1) با خطا روبروی میشم مگر آنکه به روشی که گفتم اقدام کنم.

  4. #4

    نقل قول: بروز خطا در استفاده از متدهای تجمیعی با استفاده از LINQ

    جایی که رابطه را ایجاد کردید(کلاس customer خط۸) به جای DbSet از ICollection یا IList استفاده کنید.

تاپیک های مشابه

  1. خرید عسل طبیعی مستقیم از زنبورداران
    نوشته شده توسط birtemp در بخش بک لینک (Back Links)
    پاسخ: 1
    آخرین پست: چهارشنبه 13 آذر 1398, 14:50 عصر
  2. سوال: بروز مشکل زمان استفاده از متد Last در Linq
    نوشته شده توسط csharpcollegian در بخش C#‎‎
    پاسخ: 4
    آخرین پست: سه شنبه 19 بهمن 1395, 10:04 صبح
  3. سوال: آپدیت نشدن دیتا با استفاده از LINQ و ENTITY در ویندوز فرم
    نوشته شده توسط mossaferin در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 4
    آخرین پست: سه شنبه 21 خرداد 1392, 21:51 عصر
  4. پاسخ: 5
    آخرین پست: سه شنبه 06 تیر 1391, 22:55 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •