Oracle 10g データベースで EF 4 (データベースが最初で、そこから完全に生成されたモデル) を使用していますが、1 つのフィールドに問題があります。
私のフィールドはデータベースで として定義されてNUMBER(5)
います。私のモデルでは、EF はそれをshort
. 私の問題は、いくつかの値が 32,767 (最大で short) より大きいことです。この投稿を見つけました: Entity Framework は int の代わりに short を生成します。指示に従うとうまくいきます。私のモデルには 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 に変換されました (編集を参照)
両方の方法で機能させる解決策はありますか?
ところで、Oracle INTEGER フィールドに int32 を使用するようにエンティティに指示する方法はありますか? デフォルトでは 10 進数を使用します。
編集
段階的にデバッグしているときに、値が -31073 である理由がわかりました。この行を忘れました:
dao.Value = (short)dto.Value;
私の 2 つの値は int でしたが、要するに暗黙の変換が原点でした。