Konvertieren Sie Int32 in Oracle Nummer (5) mit EF4

Ich verwende EF 4 (Datenbank zuerst, Modell vollständig daraus generiert) mit einer Oracle 10g-Datenbank und habe ein Problem mit einem Feld.

Mein Feld ist definiert alsNUMBER(5) in meiner Datenbank. In meinem Modell hat EF es als definiertshort. Mein Problem ist, dass ich einige Werte habe, die größer als 32.767 sind (maximal ein Kurzschluss) Ich fand diesen Beitrag:Entity Framework generiert short anstelle von int. Ich folge der Anleitung und es funktioniert, mein Modell enthält jetzt Int32-Werte.

Ich habe aber ein neues 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'.

Dieser Fehler wird immer auf der Registerkarte Fehlerliste von Visual Studio angezeigt. Allerdings ist der Build-Erfolg und es funktioniert zur Hälfte:

Lese einen Wert in der Datenbank funktioniertschreibe einen Wert nicht: 99999 wurde in -31073 transformiert (siehe edit)

Gibt es eine Lösung, damit es in beide Richtungen funktioniert?

BTW, gibt es eine Möglichkeit, Entity anzuweisen, int32 für Oracle INTEGER-Felder zu verwenden? Standardmäßig wird eine Dezimalzahl verwendet.

BEARBEITEN

Beim schrittweisen Debuggen habe ich festgestellt, warum mein Wert -31073 war. Ich habe diese Zeile vergessen:

dao.Value = (short)dto.Value;

Meine beiden Werte waren int, aber die implizite Umrechnung war der Ursprung.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage