6

次のようなデータベーステーブルがあります。

スキーマ図

ATaskは、にマップすることもModule、まったくマップしない(0 ... 1)こともできます。私はEntityFrameworkデータベースを最初に使用しており、データベースからモデルを生成したときに、タスクエンティティはモジュール(0以上)としてモジュールを使用していました。そこで、EDMXを開き、タスクの「モジュール」ナビゲーションプロパティを0...1に変更しました。

EDMX

さて、コンパイルしようとすると、次のエラーが発生します。

エラー3003:行1241から始まるフラグメントのマッピングの問題:アソシエーションエンドメンバータスクのカーディナリティを考えると、テーブルTaskModuleのキー列にマッピングする必要があります。マッピングを修正するか、この端の多重度を変更してください。

これを修正するために何をする必要があるのか​​わかりません。アソシエーションの詳細を確認しましたが、問題がわかりません。私はおそらく愚かな何かを見逃していることを知っていますが、完全に立ち往生しています。アソシエーションプロパティ:

TaskModuleアソシエーション

Visual Studio 2010 SP1、Entity Framework 4.3.1.0、SQLServer2008R2。

4

2 に答える 2

6

これを行う 1 つの方法は、TaskModule テーブルの主キーを再定義することです。主キーは (TaskId, ModuleName) ではなく、単に (TaskId) である必要があります。次に、データベースからモデルを更新し、その更新から取得されなかった関連付けを手動で変更します。

于 2012-04-11T15:43:14.493 に答える
1

あなたのデータベーススキーマは、あなたが与える説明では正しくありません:

TaskModule テーブルは、多対 1 またはゼロではなく、多対多の関係を意味します。

edmx では、多対多のリレーション テーブルは表示されませんが、データベースにはまだ存在します。

したがって、データベースを修正するか、EF によって提案された関係に満足する必要があります。

于 2012-04-11T15:42:09.457 に答える