0

Entity Framework 4.0 を使用してソリューションを実行しようとすると、次のエラーが発生し、マッピング設定を変更して修正する方法を知りたいと思っています。

588 行目から始まるフラグメントのマッピングの問題: EntitySet UserDatas のすべてのキー プロパティ (UserDatas.Id) のマッピングを指定する必要があります

いくつかの背景を説明するために、私は元々 、それぞれにModified/Created Date/ByおよびId列を含む以下に示すテーブルを作成しましたが、それらを抽象的なUserDataに引き出し、代わりに継承を使用することにしました。これを変えてから全部鍋にしました!

私がどこで間違っているのかについての指針はありますか?以下のデザイン ビュー ショー (GUI) を使用してきましたが、レンガの壁にぶつかったように感じます。

私の db.edmx デザイン ビューは次のようになります。エラーをクリックすると、以下に示す変数テーブルが表示されますが、この ID を継承する他のすべてのテーブルでエラーが繰り返されます (他のテーブルへのリンクはすべて無視してください。大きなデータベースの回路図全体を投稿したくない):

ここに画像の説明を入力

どうもありがとう。

4

1 に答える 1

1

ここでOO継承を誤用しているようです。オブジェクトが同じプロパティ名を持つアイテムを共有しているからといって、それらがベースから継承されているわけではありません。たとえば、タグが UserData であるかどうかをモデルで自問してください。これは、Tag HAS A UserData が継承ではなく包含を指しているというより適切な言い方ができると思います。各オブジェクトがインターフェイスを個別に実装する共通の IUserData インターフェイスを設定することをお勧めします。その場合、マッピングは UserData インターフェイスのプロパティを基になるクラスに戻します (最初に構成されたとおり)。継承モデルでマッピングを機能させることはできるかもしれませんが、クエリは LINQ と TSQL の両方の観点から非常に複雑になります。

于 2013-02-15T18:14:55.597 に答える