Я получаю исключение при запросе с Linq для Entity? - PullRequest
0 голосов
/ 07 марта 2011

Вот исключение

Невозможно создать постоянное значение тип 'System.Collections.Generic.IEnumerable`1. Только примитивные типы (такие как Int32, String и Guid ') поддерживаются в этот контекст.

Вот мой код

List<int> items = new List<int>(){1,5,7,14};

var selecteditems = (from u in _entities.UserInfo
                     join type in items on u.TypeID equals  type
                     where u.UserId == userid
                     select new UserClass
                     {
                         FirstName = u.FirstName,
                         LastName = u.LastName
                     }).ToList();

Есть идеи, что может вызвать исключение? а может быть какой-то обходной путь?

1 Ответ

3 голосов
/ 07 марта 2011

Для EF4
Избавьтесь от объединения элементов и добавьте && items.Contains(u.TypeID) к предложению where.

int[] items = new[] { 1, 5, 7, 14 }; 
var selecteditems = (from u in _entities.UserInfo 
                        where u.UserId == userid && items.Contains(u.TypeID)
                        select new UserClass {
                                            FirstName = u.FirstName, 
                                            LastName = u.LastName, 
                                            Email = ul.Email
                                    }).ToList();

Для EF1
EF1 не поддерживает коллекционные параметры (т. Е. Contains()). Эта публикация содержит код для служебного метода, называемого BuildContainsExpression, который можно использовать для обхода этого ограничения.

ОБНОВЛЕНИЕ
Я обновил ответ, чтобы отразить комментарии Крейга Штунца относительно решений для EF1 и EF4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...