1

SQL Server または Oracle で実行される従来のデータベース スキーマがあります。2 つのデータベースに Entity Framework と 1 セットの POCO を使用したいので、edmx ファイルを分割し、データに異なる概念的および物理的定義を使用して作業を進めてきました。

私が問題を抱えているのは、データベースの型を変更できないため、既存の数値データにあります。SQL Server の定義は float であり、Oracle は number(19,4) であり、それぞれ double と decimal にリバース エンジニアリングされます。

概念モデルを 10 進数 (いずれかの型に対応する必要があります) に変更すると、Edm.decimal が SqlServer.float と互換性がないことを示すエラーが表示されます。概念モデルをリバース エンジニアリングされた値のままにしておくと、概念型が POCO 型と一致しないというエラーが表示されます (これは、両方のデータベースと互換性があるように見えたため、10 進数です)。

これにアプローチする方法について何か考えはありますか?

4

1 に答える 1

0

これに対する私の最終的な解決策は、POCO に 2 つのフィールドを用意することでした。1 つは Oracle を処理するフィールドで、もう 1 つは SQL Server を処理するフィールドです。アプリケーションのバランス (ほとんどが C++) は float を使用するため、コードは SQL Server フィールドを使用し、Oracle フィールドは取得してデータベースに保存するために SQL フィールドに変換するだけです。Oracle データ モデルでは、論理モデルでフィールドの名前が変更され、変換が使用されます。

public double Value { get; set; }
private decimal ValueDecimal
{
    get{ return (decimal) Value;}
    set{ Value = (double) value;}
}

必ずしもエレガントではありませんが、モデルのテンプレートを使用して生成でき、機能します...

于 2014-04-09T14:08:32.800 に答える