1
SubMenus(同じタイプのメニューなのでSubMenusとItemsも持つことができます)とItems(異なるタイプ)を持ち、2つテーブル(メニュー用とアイテム用)。 LINQ to SQLを使用してMenuクラス(そのすべてのSubMenusとItems)の完全なグラフをロードする方法はありますか?LINQを使用してSqlから完全なグラフをロードしています
SubMenus(同じタイプのメニューなのでSubMenusとItemsも持つことができます)とItems(異なるタイプ)を持ち、2つテーブル(メニュー用とアイテム用)。 LINQ to SQLを使用してMenuクラス(そのすべてのSubMenusとItems)の完全なグラフをロードする方法はありますか?LINQを使用してSqlから完全なグラフをロードしています
SQLでリレーションシップを適切に定義すると、LINQToSQLはメニューのすべてのメニュー/項目を単一のクエリで戻す必要があります。しかし、これはグラフとして使用するのではなく、メニューの列挙(関連するメニューや項目を含む)として使用します。この列挙を繰り返して、グラフを独自に構築する必要があります。
一方で、あなたはこのような何かを行うことができるかもしれない:
var roots = db.Menus.Where(m => !m.SubMenus.Count == 0);
その後、roots
は基本メニューのコレクションになります。これは、グラフ分析アルゴリズムを実行するつもりはないが、GUIコンポーネントを構築するために上から下に向かってトラバースするつもりであれば十分です。
DataContractSerializerを使用してグラフ全体をXMLファイルにシリアル化したいので、すべてのオブジェクトをロードする必要があると思います。 LoadOptionsを何とか使って熱心にロードできますか? – mrtaikandi
要素の代わりにグラフ構造をシリアル化する場合は、実際のグラフを作成する必要があると思います。列挙では、共有メニューの親/子プロパティに要素が重複して表示されます。あなたのDBMLをチェックしてください。リレーションは既に熱心に読み込まれているかもしれません。 – tvanfosson
要素をシリアル化する必要があります。 – mrtaikandi