1

単純なデータベースで新しい 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 にするための、ある種の挿入/更新トリガー。これは、ユーザーの観点からは黙って失敗するため、良くありません。

誰かがより良い方法を持っていますか?また、詳細を提供する必要がある場合はお知らせください。

-ケリー

4

1 に答える 1

1

親子関係以上のものを格納する必要があったため、階層をアセンブリ テーブルに移動することになりました。そうすることで、DynamicData コントロールをダンプし、ドラッグ アンド ドロップのサーバー側イベント (ComponentArt) でより直感的な TreeView を使用できるようにもなりました。コントロールの性質上、アイテムをそれ自体の親にすることはできないため、問題は意味がありませんでした。うわー、7 か月は Entity Framework の最初の経験では長い時間です :)

于 2009-07-17T21:06:58.467 に答える