.NET 4.0 Entity Framework を検討している開発時間を短縮するために、古い ASP アプリケーションを最新の .NET バージョンに移行しています。しかし、この問題で私たちの開発はレンガの壁にぶち当たったようです。
与えられたのは私たちのデータベースの小さな部分です: 車とそれぞれのプロパティのリストを含むテーブル OBJECT です。OBJECT 内の特定の車について、OPTIONS、ACCESSORIES、および STANDARD EQUIPMENT のリストを含むテーブル OBJECT_OPTIONS もあります。これら 3 つのタイプはすべて同じフィールドを持っているため、同じテーブルに格納されます。列 ncopt_type は、異なるリストを区別するために使用されます。可能な値は次のとおりです。「opt」、「acc」、および「sta」。テーブル OBJECT_OPTIONS は、テーブル OBJECT 内の一意の車 (obj_id) を表す ncopt_obj_id を介して OBJECT にリンクします。
私たちの目標は、異なる OBJECT_OPTIONS リストにリンクする 3 つのプロパティを OBJECT エンティティに提供することです。 - プロパティ OPTIONS - プロパティ ACCESSORIES - プロパティ STANDARDEQUIPMENT
継承モデルによる階層ごとのテーブルに関するさまざまなチュートリアルとウォークスルーを試しましたが、構築可能なモデルを作成することに成功していません。
技術的には、次のことを行いました。
- エンティティ OBJECT の作成
- エンティティ OBJECT_OPTIONS を作成し、抽象化します
- ベースタイプ OBJECT_OPTIONS を使用してエンティティ OPTION、ACCESSORY、および STANDARD_EQUIP をすべて追加します
- ncopt_type = '...' で 3 つのテーブルすべてに条件を追加します。
- OBJECT に 3 つのナビゲーション プロパティを追加し、すべて継承されたエンティティの 1 つにリンクします: OPTIONS、ACCESSORIES、STANDAARD_EQUIPMENT
このセットアップ中に一連のエラーが表示されますが、最終的には次のエラーになります。
エラー 3032: 行 250、286 で始まるフラグメントのマッピングの問題:EntityTypes NCO.Model.OPTION、NCO.Model.ACCESSOIRE、NCO.Model.STANDAARD_EQUIP がテーブル OBJECT_OPTIES の同じ行にマップされています。マッピング条件を使用して、これらのタイプがマップされる行を区別できます。
ただし、3 つのオブジェクトすべてに条件が存在します。
私はこの問題の解決策を見つけられず、すでに多くの時間を費やしてきました。現在、回避策を使用していますが、プロジェクトの終了までにこの状況がさらに数回発生するため、これを修正したいと考えています。
さらに詳しい情報が必要な場合は、コメントまたはメールをお送りください。