2

次のようなデータベース構造があります。

アイテム

  • ID
  • 名前
  • ParentItemFK (タスクとメモは任意の項目を親として持つことができます。カテゴリは他のカテゴリのみを親として持つことができます)
  • カテゴリーFK
  • TaskFK
  • NoteFK

カテゴリー

  • ID
  • 説明 (オプション)

タスク

  • ID
  • 完全な説明
  • 完了

ノート

  • ID
  • 全文

項目は TreeView に表示されます。項目は、カテゴリ、タスク、またはメモのいずれかです (したがって、FK 列の 1 つだけが入力されます)。

TreeView にすべての項目を表示したいと思います。Silverlight で表示するために、WCF で DomainService を使用してバックエンドからデータを取得しています。

TreeView に表示されるオブジェクトをプログラムで作成できます (つまり、サブ項目ごとに子 ItemNode を持つ ItemNode などのオブジェクトを作成します)。これはおそらく問題なく機能しますが、DomainService のデータが更新されると、ItemNodes のリスト全体を再構築する必要があると思います (これは頻繁に発生する可能性があります)。

それが問題になる場合は、DomainService の下でエンティティ フレームワークを使用しています。

これを行うより良い方法はありますか??

ありがとう!

4

1 に答える 1

1

これと似たようなことをして、自分の階層を表すカスタム オブジェクトを作成しました。次に、ヘルパー クラスを作成してカスタム オブジェクトを再帰化し、ツリー ノードを作成して TreeView にバインドします。

また、Hierarchy SQL データ型を使用して、データベース内の Hierarchy を表現しました。

Entityフレームワークを使用しているので、エンティティを取り込んで再帰し、TreeViewにバインドできるTreeNodeの階層を吐き出すTreeNodeクラスを作成するのが最善の策だと思います。

また、ユーザーがノードと対話するときに、TreeNode を表すエンティティを簡単に変更できるように、そのエンティティの一意の識別子を TreeNode.Value に入れたいと思うでしょう。したがって、エンティティを再帰し、その識別子に基づいてそのエンティティへの参照を取得する別のクラスを作成します。

h番目

于 2011-03-29T12:56:06.910 に答える