ADO.NET Entity Framework を使用して ASP.NET MVC サイトを構築しています。外部キーによって関連付けられたこれらのエンティティを含むエンティティ モデルがあります。
レポート(ID、日付、見出し、Report_Type_ID など)
- SubReport(ID、ReportText など) - Report との 1 対 1 の関係。
- ReportSource(ID, Name, Description) - Sub_Report との 1 対多の関係。
- ReportSourceType(ID, Name, Description) - ReportSource との 1 対多の関係。
- 連絡先 (ID、名前、住所など) - Report_Source との 1 対 1 の関係。
- ReportSource(ID, Name, Description) - Sub_Report との 1 対多の関係。
サブレポートの種類ごとに Create.aspx ページがあります。ポスト イベント メソッドは、新しい Sub_Report エンティティを返します。
前に、投稿メソッドで、次のプロセスに従いました。
- ページのフィールドから新しいレポート エンティティのプロパティを設定します。
- ページのフィールドから SubReport エンティティの特定のプロパティを設定します。
- SubReport エンティティの Report を、1 で作成した新しい Report エンティティに設定します。
- ページによって提供された ID を指定して、ReportSource を検索し、Sub_Report エンティティの ReportSource を見つかったエンティティに設定します。
- 変更内容を保存。
このワークフローは、数週間うまくいきました。それから先週何かが変わり、それはもう機能しません。保存操作の代わりに、次の例外が発生します。
UpdateException: 「'DIR2_5Entities.ReportSourceSet' のエンティティ 「FK_ReportSources_ReportSourceTypes」関係に参加します。 0 件の関連する 'ReportSourceTypes' が見つかりました。1 'Report_Source_Types' が必要です。"
デバッグ ビジュアライザーには次のように表示されます。
- SubReport の ReportSource が設定およびロードされ、そのすべてのプロパティが正しい。
- Report_Source には、有効な ReportSourceType エンティティが添付されています。
SQL Profiler では、準備された SQL ステートメントは問題ないように見えます。誰かが私が見逃している明白なことを教えてもらえますか?
ティア
注: この場合、Report と SubReport は常に新しいエンティティです。Report エンティティには、多くの種類のレポートに共通のプロパティが含まれており、一般的なクエリに使用されます。サブレポートは、タイプによって異なる追加パラメーターを持つ特定のレポートです。実際には SubReport の種類ごとに異なるエンティティ セットがありますが、この質問はそれらすべてに当てはまるため、簡略化した例として SubReport を使用します。