@nyarloc
Junior C#

LINQ to SQL и Enum?

Есть следующий запрос:
IQueryable<Header> headers = context.Headers;
IQueryable<Line> lines = context.Lines;
result = headers.Select(header => new ReportModel
                {
                    Comment = header.Comment,
                    Lines = lines.Where(line => line.Header == header.ID).Select(line => new ReportLineModel
                    {
                        SomeProperty = line.SomeProperty,
                        Error = ErrorLine.None
                    })
                }).ToArray();

Он не должен выполниться, поскольку ErrorLine - это Enum. Однако в дебаге он выполняется, а в релизе падает. В чем может быть причина? Версия фреймворка 4.0

The specified value is not an instance of type 'Edm.Int32'
  • Вопрос задан
  • 129 просмотров
Решения вопроса 1
@basrach
'Edm.Int32'

Очевидно что стандартный enum невозможно конвертировать в какой-то там 'Edm.Int32'. Об этом среда вам и говорит. Если вообще проблема в этой строке.
Но так как объявления классов вы не привели, вполне может быть что и SomeProperty имеет у вас этот странный тип, в который linq не может автоматом замапить значение из БД.


Вспомнил, edm = Entity Data Model.
У вас какая-то древняя версия EF? Похоже на баг ранних версия EF. Попробуйте заменить
Error = ErrorLine.None
на
Error = (ErrorLine)1 // то значение, которое имеет None
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы