2015-07-03 2 views
0

я получаю следующее сообщение об ошибке при попытке вызвать метод спискаSystem.Data.Entity.DbSet не может быть вызван с экземпляром типа System.Data.Entity.Core.Objects.ObjectQuery

Дополнительная информация: Method 'GRCWebApp.Models.Day Найти (System.Object [])' объявили о типе 'System.Data.Entity.DbSet 1[GRCWebApp.Models.Day]' cannot be called with instance of type 'System.Data.Entity.Core.Objects.ObjectQuery 1 [GRCWebApp.Models.Day]

Контролер

 public ActionResult ListClubMembershipType(int clubId) 
    { 
     //Populate the list 
     var types = from s in db.MembershipTypes 
        where (s.ClubId == clubId) 
        orderby s.Type 
        select s; 
     ViewBag.typesCount = types.Count(); 
     var model = types.Select(t => new ListMembershipTypeViewModel    
    { 
     Type = t.Type, 
     ClubId = clubId, 
     Cost = t.Cost, 
     ReducedCost = t.ReducedCost, 
     ReducedDate = db.Days.Find(t.DayId).DayNum + "/" + db.Months.Find(t.MonthId).MonthName, 
     MinAge = t.MinAge, 
     MaxAge = t.MaxAge, 
    }); 

     return PartialView("_ListClubMembershipType", model); 
    } 

и ошибка находится на линии ReducedDate

День Модель:

public class Day 
{ 
    public int DayId { get; set; } 

    [Column(TypeName = "int")] 
    public int DayNum { get; set; } 

    public virtual ICollection<MembershipType> MembershipTypes { get; set; } 
} 

Месяц Модель:

public class Month 
{ 
    public int MonthId { get; set; } 

    [Column(TypeName = "nvarchar")] 
    public String MonthName { get; set; } 

    public virtual ICollection<MembershipType> MembershipTypes { get; set; } 
} 

MembershipType Модель:

 public int MembershipTypeId { get; set; } 

    [StringLength(150)] 
    [Column(TypeName = "nvarchar")] 
    public String Type { get; set; } 

    [StringLength(350)] 
    [Column(TypeName = "nvarchar")] 
    public String Description { get; set; } 

    [Column(TypeName = "int")] 
    public int ClubId { get; set; } 

    [Column(TypeName = "decimal")] 
    public Decimal Cost { get; set; } 

    [Column(TypeName = "decimal")] 
    public Decimal ReducedCost { get; set; } 

    [Column(TypeName = "int")] 
    public int? DayId { get; set; } 

    [Column(TypeName = "int")] 
    public int? MonthId { get; set; } 

    [Column(TypeName = "int")] 
    public int MinAge { get; set; } 

    [Column(TypeName = "int")] 
    public int MaxAge { get; set; } 

    [Column(TypeName = "bit")] 
    public bool? Dormant { get; set; } 
} 

ViewModel Is:

public class ListMembershipTypeViewModel 
{ 
    [Display(Name = "Type")] 
    public String Type { get; set; } 

    public int ClubId { get; set; } 

    [Display(Name = "Full Cost")] 
    public Decimal Cost { get; set; } 

    [Display(Name = "Reduced Cost")] 
    public Decimal ReducedCost { get; set; } 

    [Display(Name = "Reduced From")] 
    public string ReducedDate { get; set; } 

    [Display(Name = "Min Age")] 
    public int MinAge { get; set; } 

    [Display(Name = "Max Age")] 
    public int MaxAge { get; set; } 
} 

Я пытаюсь объединить значения из двух других таблицы, чтобы составить строку, которая показывает количество дней и месяц слово

Ive пытался добавив ToString, но который генерирует ту же ошибку

ответ

0

я исправил вопрос, добавив день и месяц к MembershipType модели

public Day Day { get; set; } 

    public Month Month { get; set; } 

Тогда следующее в контроллере:

ReducedDate = t.Day.DayNum + " " + t.Month.MonthName, 

Как POIN в этом вопросе Populating List with related information

Смежные вопросы