単純なデータベースで新しい ADO.NET Entity Data Model を使用しています。主キー (PageID) を持つテーブル/エンティティと、親/子の "0..1 対多" 関係の PageID でそれ自体を参照する ParentID 外部キーがあります。ASP.Net ページでは、FormView を asp:DynamicControl と共に使用して、これをコントロールとして表現しています。その部分は、1 つの重要な詳細を除いて正常に機能します。ページがレンダリングされると、可能な親のリストにそれ自体が含まれます。アイテムがそれ自体の親を持つように設定しても、エラーは発生せず、データベースに保存されます。明らかに、階層オブジェクトはそれ自体の親を持つべきではありません。この動作を制限するにはどうすればよいでしょうか?
私が見る限り、私のオプションは次のとおりです。
_
どういうわけか、DynamicData FieldTemplatesの ForeignKey edit.ascx を変更します。現在のエンティティの主キーへの参照を取得して、可能な外部キーの選択肢から削除する方法がわからないため、これは問題です。さらに、これにより、キーがたまたま衝突する非階層的な fkey refs の使用法が潜在的にホースされます。レンダリングされた DropDownList から ListItem を削除するために、ページで PreRender のジガリー ポケリを実行します。問題のページに対してのみ修正されるため、これは正しい方法とは思えません。編集:これは私が現在解決している方法です。
ParentID がそれ自体と一致する場合に強制的に null にするための、ある種の挿入/更新トリガー。これは、ユーザーの観点からは黙って失敗するため、良くありません。
誰かがより良い方法を持っていますか?また、詳細を提供する必要がある場合はお知らせください。
-ケリー