Конвертировать Int32 в номер Oracle (5) с EF4
Я использую EF 4 (сначала база данных, полностью сгенерированная модель) с базой данных Oracle 10g, и у меня проблема с одним полем.
Мое поле определяется какNUMBER(5)
в моей базе данных. В моей модели EF определил это какshort
, Моя проблема в том, что у меня есть некоторые значения, которые больше, чем 32,767 (максимум короткого), я нашел этот пост:Entity Framework генерирует короткие вместо int, Я следую инструкции, и она работает, моя модель теперь содержит значения Int32.
Но у меня есть новая проблема:
Error 2019: Member Mapping specified is not valid. The type 'Edm.Int32[Nullable=True,DefaultValue=]' of member 'XX' in type 'Model.XXX' is not compatible with 'OracleEFProvider.number[Nullable=True,DefaultValue=,Precision=5,Scale=0]' of member 'XX' in type 'Model.Store.XXX'.
Эта ошибка всегда отображается на вкладке Список ошибок Visual Studio. Однако сборка удалась, и она наполовину работает:
прочитать значение в базе данных работзапись значения не работает: 99999 был преобразован в -31073 (см. редактирование)Есть ли решение, чтобы оно работало в обоих направлениях?
Кстати, есть ли способ сказать сущности использовать int32 для оракула поля INTEGER? По умолчанию используется десятичная дробь.
РЕДАКТИРОВАТЬ
Отлаживая шаг за шагом, я обнаружил, почему мое значение было -31073. Я забыл эту строку:
dao.Value = (short)dto.Value;
Мои два значения были int, но неявное преобразование вкратце было источником.