2012-11-09 9 views
5

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型でしたが、短いにおける暗黙の変換が起源でした。

+0

数値は_12.433242_の整数である可能性があるので、その数値を保持することができるので、「数値」には「10進数」が使用されます。とにかくあなたの質問に関しては、オラクルに正式な回答を求めてみましたか? – gdoron

+0

Oracle Data Provider for Oracle 11gを使用しましたか? Oracle 11gにEDP 4 with ODPを使用しており、Oracle INTEGERに問題はありません。 –

答えて

6

エラーを削除する方法を見つけました。

私は、XMLモードでEDMXファイルを編集したのSSDLセクションで私のフィールドを見つけた:

<Property Name="SIT_INSEE" Type="number" Precision="5" /> 

を私はPrecision="5"を削除し、警告が消えました。

1

誰かに同様の問題がある場合に備えて、私の2セントを追加するだけです。 web.configのマッピングに以下を追加し、edmxモデルをゼロから削除して(データベースを削除してデータベースから再生成する)、これらの問題の一部を解決することに気付きました。 web.configに値を単に追加するだけでは何も解決されませんでした(おそらく、シーンの背後にあるコードの一部を再生成するのは私の推測でしょう)。

<oracle.dataaccess.client> 
    <settings> 
     <add name="int32" value="edmmapping number(9,0)" /> 
    </settings> 
    </oracle.dataaccess.client> 
関連する問題