Как преобразовать числовые типы в отображении из хранимой процедуры в сложный тип в Entity Framework 4? - PullRequest
2 голосов
/ 28 октября 2010

У нас есть две хранимые процедуры в Microsoft SQL Server, которые возвращают данные, которые концептуально одного типа. Один возвращает идентификатор как SCOPE_TDENTITY () (числовой), а другой возвращает 0 (int32). У нас есть сложный тип с идентификатором свойства. Если это свойство является десятичным значением, допускающим значение NULL, мы получим следующую ошибку при перечислении результатов sproc, который возвращает int32:

The 'ID' property on 'EntitryRequestReturn' could not be set to a 'Int32' value. You must set this property to a non-null value of type 'Decimal'.

Изменение типа свойства на int32 просто перемещает ошибку в другой sproc с типами данных, перечисленными в обратном порядке. Изменение того, являются ли типы обнуляемыми, не имеет значения.

Как я могу заставить EF4 преобразовать столбец int, возвращенный из sproc, в десятичный при построении сложного типа?

1 Ответ

0 голосов
/ 07 января 2011

Это сработало в моем случае.Это может помочь здесь.

Если хранимая процедура возвращает данные с помощью оператора select, это очень помогает преобразовать все возвращаемые поля, даже если они имеют свои собственные типы данных.

select convert(int, myInt) as myInt

работает лучше, чем

select myInt

Много раз мои SP отображали строку как последнее поле, когда это было действительно Int32.Я добавил операторы преобразования во все поля, и он никогда больше не повторял эту ошибку.

Тем не менее, вы можете просто выполнить преобразование в SP до его отправки в EF.

...