Konwertuj numer Int32 na Oracle (5) za pomocą EF4
Używam EF 4 (najpierw baza danych, model w pełni wygenerowany z niego) z bazą danych Oracle 10g i mam problem z jednym polem.
Moje pole jest zdefiniowane jakoNUMBER(5)
w mojej bazie danych. W moim modelu EF zdefiniował go jakoshort
. Moim problemem jest to, że mam pewne wartości, które są większe niż 32 767 (maks. Krótki) Znalazłem ten post:Entity Framework generuje krótkie zamiast int. Podążam za instrukcją i działa, mój model zawiera teraz wartości Int32.
Ale mam nowy problem:
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'.
Ten błąd jest zawsze wyświetlany na karcie Lista błędów w Visual Studio. Jednak sukces w budowaniu, a to w połowie działa:
odczytać wartość w pracach bazy danychnapisz wartość nie działa: 99999 został przekształcony w -31073 (patrz edycja)Czy istnieje rozwiązanie, aby to działało w obie strony?
BTW, czy istnieje sposób, aby powiedzieć jednostce, aby używała int32 dla pól Oracle INTEGER? Domyślnie używa dziesiętnego.
EDYTOWAĆ
Podczas debugowania krok po kroku odkryłem, dlaczego moja wartość wynosiła -31073. Zapomniałem tej linii:
dao.Value = (short)dto.Value;
Moje dwie wartości były int, ale w skrócie ukryta konwersja była początkiem.