2015-07-29 2 views
1

У меня есть это исключение ошибки времени erunLINQ к Entities не распознает метод «System.Collections.Generic.Dictionary`

LINQ to Entities does not recognize the method 
'System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[Project.Model.Value]] 
ToDictionary[Value,String,List`1](System.Collections.Generic.IEnumerable`1[Project.Model.Value], 
System.Func`2[Project.Model.Value,System.String], 
System.Func`2[Project.Model.Value,System.Collections.Generic.List`1[Project.Model.Value]])' 
method, and this method cannot be translated into a store expression. 

Я попробовал то, что когда-нибудь я могу установил его, но не использовать. Я думаю, что исключение приходит из списка кто-то может помочь мне исправить

public IEnumerable<ItemManagement> getItemsForFormType(string formType) 
     { 
      using (var db = new AthenaContext()) 
      { 

       List<Value> dropDownListValue = (from val in db.Values 
               where val.ParentId == (from va in db.Values 
                     where 
                      va.ParentId 
                      == (from value3 in db.Values 
                       where value3.Name == formType 
                      select value3.RecordId).FirstOrDefault() 
                    select va.RecordId).FirstOrDefault() 
              select val).ToList(); 
      var result = (from value1 in db.Values 
          where value1.Name == formType 
          select 
           new ItemManagement 
           { 

            FormType = value1.Name, 
            RecordID = value1.RecordId, 
            FormControllerNames = 
            (from va in db.Values 
            where va.ParentId == (from value3 in db.Values where value3.Name == formType select value3.RecordId).FirstOrDefault() 
            select va).ToDictionary(va => va.Name, va => dropDownListValue) 
           }).ToList(); 
      return result; 
     } 
+1

Не могли бы вы отлаживать и рассказывать нам, где именно возникает исключение? –

+0

@JamieRees это результат var result = (from value1 in db.Values ​​...) изнутри linq –

ответ

3

Вы пытаетесь встроить функции библиотеки .NET для вашего EF запроса. Поскольку он не переводится на SQL, это не поддерживается.

Вы должны переписать свой запрос, не используя .ToDictionary().

В этом конкретном случае это может быть не сложно. Повторите попытку, если проекция ToDictionary() необходима вообще. Вы можете безопасно писать SQL-транслируемую проекцию, используя:

.Select(new { anyName: <expression>, otherName: <otherExpression>, etc }) 
Смежные вопросы