Oracle 10gデータベースでEF 4(データベースを完全に生成したデータベース)を使用していますが、1つのフィールドに問題があります。EF4でInt32をOracle番号(5)に変換します
私のフィールドは、自分のデータベースにNUMBER(5)
と定義されています。私のモデルでは、EFはそれをshort
と定義しています。 私の問題は、私は32,767(最大の短い)より大きいいくつかの値を持っていることです。 私はこの投稿を見つけました:Entity Framework generates short instead of 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に転換した(編集を参照)
ですそこに両方の方法で動作させるための解決策がありますか?
ところで、oracle INTEGERフィールドにint32を使用するようエンティティに指示する方法はありますか?これはデフォルトで10進数を使用します。私の値は-31073た理由
EDIT
ステップバイステップのデバッグの間、私が見つかりました。私は、この行を忘れてしまった:
dao.Value = (short)dto.Value;
私の二つの値はint型でしたが、短いにおける暗黙の変換が起源でした。
数値は_12.433242_の整数である可能性があるので、その数値を保持することができるので、「数値」には「10進数」が使用されます。とにかくあなたの質問に関しては、オラクルに正式な回答を求めてみましたか? – gdoron
Oracle Data Provider for Oracle 11gを使用しましたか? Oracle 11gにEDP 4 with ODPを使用しており、Oracle INTEGERに問題はありません。 –