5

最初にエンティティ モデルを使用してシステムを Oracle に接続する必要があります。エンティティ「Entity1」を持つモデルがあります。「MyBool」は、その名の通りブール型のプロパティです。

ここに画像の説明を入力

モデルからSQLスクリプトを正常に生成し、Oracleデータベースで実行しました。

それから私はこのコードを持っています:

static void Main(string[] args)
{
    Model1Container context = new Model1Container();
    Entity1 entity = context.Entity1.FirstOrDefault();
}

このコードは、次の例外をスローします。

指定されたスキーマは無効です。エラー: Model1.msl(8,12): エラー 2019: 指定されたメンバー マッピングが無効です。タイプ「Model1.Entity1」のメンバー「MyBool」のタイプ「Edm.Boolean[Nullable=False,DefaultValue=]」は、「OracleEFProvider.number[Nullable=False,DefaultValue=,Precision=1,Scale=0」と互換性がありません]' タイプ 'Model1.Store.Entity1' のメンバー 'MyBool' の。

私は多くのスレッドを読みましたが、多くの人が追加するように言っています:

  <oracle.dataaccess.client>
    <settings>
      <add name="bool" value="edmmapping number(1,0)" />
    </settings>
  </oracle.dataaccess.client>

構成ファイル(私の場合はコンソールアプリで、次にapp.config)。しかし、これは何も変わりませんでした。実際、このパラメーターに任意の値を設定でき、エラーはまったく同じになります。このパラメータが読み取られていないようです。

その後、何人かが言いました: Oracle.DataAccess DLL をプロジェクトに追加してください。私がしたこと、そして結果は同じでした。

このトピックに関する多くのスレッドがあることは知っていますが、どれも私を助けてくれました。他に何をすべきかわかりません。私の実際のアプリケーション モデルは、既に Sql Server で運用されています。

4

2 に答える 2

4

いくつかの調査を行った後、.net bool タイプへのデータベース number(1) マッピングのカスタム マッピングを使用してもまったく問題ないことがわかりました。欠点はもちろん、2019 年のマッピング エラー (またはスキーマ検証エラー) です。通常はソリューション ビルドに問題を引き起こさないマッピング エラーを取り除きたい場合は、ビルド中にモデルの検証をオフにします。[ビルド時に検証] を false に設定します。

于 2015-11-16T15:55:27.203 に答える
0

プロジェクトで EF6 と Oracle.ManagedDataAccess.Client を使用しています。EF6 にアップグレードした後、実行時に同じエラーが発生し始めました。次のブロックを Web.Config に追加すると、エラーが解決しました。

<oracle.manageddataaccess.client>
    <version number="*">
      <edmMappings>
        <edmNumberMapping>
          <add NETType="int16" MinPrecision="1" MaxPrecision="4" DBType="Number"/>
        </edmNumberMapping>
      </edmMappings>
    </version>
  </oracle.manageddataaccess.client>
于 2017-02-17T08:59:55.573 に答える