Entity Framework-ナビゲーションプロパティを手動で追加


115

データベースからEntity Framework Model(4.0)を生成しました。データベースを設計しておらず、スキーマを制御できませんが、外部キー制約が定義されていないテーブルがいくつかありますが、暗黙的な関係が定義されています。

例えば:

次の列を持つPeopleというテーブルがあります。GenderIDRaceID

GenderとRaceの両方のテーブルがありますが、Peopleテーブルには外部キーがありません。

モデルをインポートしたときに、これらの関係のナビゲーションプロパティが追加されませんでした。手動で追加しようとしましたが、From RoleとTo Roleが無効になっています。自分で関係を追加する方法がわかりません。どうすればよいですか?

回答:


181

うん-それは簡単ではありません。

ここではあなたが何をすべきかです:

1 -デザイナー、上の右クリックの追加 - > 協会

2-関連付けとカーディナリティをセットアップします(人* .. 1ジェンダー、人* .. 1レース)

3- モデルブラウザに移動 -> 関連付け

4-新しく作成した関連付けを右クリックし、[ プロパティ ]をクリックします

5-ここでは、キーとカスケードオプションのエンドポイントをセットアップする必要があります。エンドポイントが正しいことを確認してください。暗黙的なナビゲーションプロパティの参照制約をここで設定することもできます。

6-ナビゲーションプロパティを関連するテーブル/フィールドにマップします。

7-モデルを検証し、指を交差させます。

お役に立てれば。


20
髪の毛の残りを保存するための+1。関連付けのプロパティページの参照制約設定で外部キー列を変更する必要がある#6を追加します。[...]を押して参照制約ダイアログを開き、デザイナーが依存プロパティの下の子テーブルに挿入したダミーフィールドを変更します。
Joel Brown

8
また、子テーブルのプロパティに移動して、デザイナーが追加したダミーフィールド(子テーブルの実際のフィールドにはマップされない)を削除する必要もあります。
Joel Brown

2
ビューの場合は、主キーの定義が正しいことを確認してください(関連フィールドを右クリックして選択し、プロパティでEntityKeyとしてマークします)。そうしないと、「依存関係の役割がキープロパティを参照するため、関係の役割では多重度が有効ではありません...」
Mikl X

1
#2では、[エンティティに外部キープロパティを追加する]チェックボックスをオフにしておくとよいでしょう。あなたが本当にそれを必要としないなら、それはいくつかの不必要な頭痛を引き起こします。
暗号化2015年

データベースからモデルを再度更新すると、足場エンティティは手動で追加された関連付けを維持しますか?
voodoo_patch 2018年

45

私は次の解決策を提案するこのブログの投稿に出くわしました。

  1. デザイナーの背景を右クリックしてコンテキストメニューから関連付けを追加する
  2. アソシエーションをセットアップします(外部キーの作成をオフにしてください)
  3. 関連付けを右クリックし、[プロパティ]を選択します
  4. ...参照制約のボタンをクリックします
  5. 内のキー間の関係を設定します
  6. 確認(デザイナーのコンテキストメニューから)
  7. ???
  8. 利益!

4
+1ポイント4は私にそれを正しくさせてくれました、RPM194答えでそれを見落としました。
Hugo Logmans 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.