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.