2010-01-12 2 views
2

Я использую LINQ to Entities в слое Data моего приложения, но в вызове results.ToList() меня забивает исключение NotSupportedException. Здесь функция вызывает исключение:ASP.NET Entity Framework NotSupportedException

public List<Organization> GetByLocation(Location l) 
    { 
     using (Entities entities = new Entities()) 
     { 
      var results = from o in entities.OrganizationSet 
          where o.Location == l 
          select o; 

      return results.ToList<Organization>(); 
     } 
    } 

Дело в том, чтобы вернуть список всех организаций на данном участке в Service Layer (который возвращает его к контроллеру MVC, который преобразует его в JSON затем возвращается это клиенту). Уровень сервиса ожидает, что список будет возвращен.

Это может быть довольно просто ... любая помощь?

ответ

8
public List<Organization> GetByLocation(Location l) 
{ 
    using (Entities entities = new Entities()) 
    { 
     var results = from o in entities.OrganizationSet 
         where o.Location.Id == l.Id 
         select o; 

     return results.ToList<Organization>(); 
    } 
} 

Поскольку этот запрос будет преобразован в SQL, вы не можете сделать эталонное сравнение l. Сравните с ПК, вместо этого.

+0

Sheesh, я делаю это миллионы раз в Java в Hibernate Queries и полностью забываю при работе в C#. (И если кто-нибудь спросит, я избегаю NHibernate на данный момент, чтобы попытаться сохранить это приложение SOMEWHAT в легком весе, хотя оно еще немного хорошо спроектировано). – Jason

+0

Кстати, есть ли веские причины не автоматически превращать ссылочное сравнение в сравнение первичного ключа? Это сократило бы запросы, особенно в случае составных клавиш. –

+0

Даниэль, похоже, это должно быть возможно, но я не думал о последствиях. Во-первых, '==' может быть перегружен. –

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