Мой вопрос:
Как отлаживать процесс сопоставления из записей, которые возвращаются с SQL сервера как он сопоставляется с объектом класса, так что я могу точно сказать, какое свойство класса не работает?
Фон:
Получение ошибки при возврате данных с SQL Сервера как он пытается сопоставить данные sql с объектом. Я использую Entity Framework 6 и проекцию Automapper для того, что это стоит.
Я получаю ошибку The cast to value type 'System.Int32' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
.
Я знаю, что это означает один из столбцов из SQL возвращает NULL, который он пытается сопоставить со свойством класса, которое в int
и не допускает значения NULL . Но как вы можете определить , какое свойство является проблемой ?
Запрос, который создает EF, является массивным (1250 строк) с множеством общих c столбцов, таких как C1
, C2
и др. c. Кажется, что порядок столбцов, для именованных столбцов, которые он возвращает, находится в алфавитном порядке, вроде ... поэтому я взял все свойства класса и отсортировал их в альфа-порядке, чтобы увидеть, соответствуют ли они порядку столбцов .. . они вроде как делают, но не на 100% ... плюс класс наследуется от другого ... не уверен, включает ли он те, которые находятся в альфа-сортировке или в конце, et c.
В любом случае , это была моя попытка выяснить, какое свойство является проблемой. В запросе есть несколько полей, которые имеют значение NULL, но есть много полей и много строк и int, допускающих значение NULL, et c, поэтому они могут быть действительными. Даже пытаясь выяснить, возвращает ли столбец C1
значение null, какое фактическое свойство, которое он пытается сопоставить, практически невозможно с этим очень большим запросом и классом с более чем 80 полями.
Есть ли способ сломать вниз по sql отображению объектов, чтобы точно знать, в каком свойстве проблема?