2015-04-27 3 views
1

Я пытаюсь отобразить результаты запроса, сложность состоит в том, что каждая строка в таблице будет включать в себя один объект Route и список объектов Visit. Я хочу, чтобы сохранить результаты запроса в списке RouteViewModels:Невозможно создать постоянное значение типа ''. В этом контексте поддерживаются только примитивные типы или типы перечислений

public class RouteViewModel 
{ 
    public Route Route { get; set; } 
    public List<Visit> Visits { get; set; } 
} 

бегает запрос и попытаться сохранить результаты:

var query = 
      from r in db.Routes 
      join v in visitList on r equals v.Route into visits 
      select new { RouteObject = r, VisitList = visits }; 

int i = 0; 
foreach (var prodGroup in query) 
     { 
      vm[i].Route = prodGroup.RouteObject; //vm is an list of RouteViewModels. 
      j = 0; 
      foreach(var prodItem in prodGroup.VisitList) 
      { 
       vm[i].Visits[j] = prodItem; 
       j++; 
      } 
      i++; 
     } 

Я написал цикл Еогеаспа следующего ответы на аналогичные должности, но эта строка дает мне ошибку:

Unable to create a constant value of type 'ApplicationDatabase.Visit'. Only primitive types or enumeration types are supported in this context

Как получить доступ к Маршруту и ​​его списку посещений?

+0

Какая линия исходит от этой ошибки? –

+0

После некоторого Googling, кажется, проблема в том, что вы используете 'visitList'. ["Вы не можете присоединиться к набору данных в базе данных с другим набором данных, который находится в памяти."] (Http://stackoverflow.com/a/18944508/785745) –

+1

Попробуйте изменить тип посещений на IEnumerable . Попробуйте перечислить query.ToList() вместо запроса. Это фактически заставит ваш запрос выполнить, поэтому у вас есть все данные в памяти. – qbik

ответ

0

Я не уверен, что вы используете EF, если вы затем

Если у вас есть PrimaryKey в таблице маршрутов затем использовать его для сравнения объектов. например

var query = 
      from r in db.Routes 
      join v in visitList on r.Id equals v.Route.Id into visits 
      select new { RouteObject = r, VisitList = visits };