web-dev-qa-db-ja.com

ReferentialConstraintの従属プロパティは、ストアで生成された列にマップされます。列: 'ID'

Venueオブジェクトを追加してSaveChanges()を呼び出そうとすると、なぜこのエラーが発生するのか理解できません。 Venueオブジェクトを使用したモデルの唯一の違いは、Cityとの関係が1対1であるということです。

City city = ProcessCityCache(ev, country, db); // After this call, 'city' is already persisted.
venue = new Venue {
    TicketMasterURL = ev.VenueSeoLink,
    Name = Capitalize(ev.VenueName),
    City = city
};
db.Venues.AddObject(venue);
db.SaveChanges(); // Exception thrown here.

どんな洞察も大歓迎です!

Model Diagram

(画像を独自のタブ/ウィンドウで開いてフルサイズで表示します)

16
Nick Strupat

私は問題を見つけました。私の責任です。 FK_Venue_Cityの関係をCity.ID-> Venue.IDに設定しましたが、必要なのはCity.ID-> Venue.CityIDでした。データベースにその変更を加えてから、モデルを更新しました。

30
Nick Strupat

OK、このあいまいなエラーメッセージで私の経験を追加します:

同じ例外があり、データベースをEDMXと比較した後(退屈な作業です!!)、誤って1対1の関係を逆に設定していることがわかりました(外部がプライマリで、プライマリが外部でした)。

修正したら、すべてスムーズに機能しました。

とにかく-うまくいけば、私の失われた3〜4時間が誰かを助けるでしょう! :)

8
justabuzz

私も同様の問題に苦しんでいます。私の場合、FK関係を誤って設定してから、誤ったFKを持つテーブルをEFモデルにインポートしていました。 VisualStudioのUpdate WizardでFK関係を修正したにもかかわらず、修正が反映されませんでした。

これを解決するために、EFモデルからテーブルを削除し、Update Wizard)を使用してテーブルを再インポートしました。これは、最終的に変更で取得されました。これが他の誰かに役立つことを願っています。

5

私の場合も、関連付けが正しく構成されていませんでした。具体的には、必要なのが1..0,1のときに、1..1の関係を設定していました。

0
AndyClaw

私の2ビットを追加します。このエラーが発生し、最終的に親子関係が逆転したことがわかりました。その関係をクリーンアップすると、再び機能しました。

0
Jeff Paulson