1

複数レベルの階層を持つアカウントを表すデータベース テーブルがあります。各行には、現在のアカウントを表す「AccountKey」と、場合によっては親の「AccountKey」を表す「ParentKey」があります。

私のモデル クラスは「AccountInfo」で、アカウント自体に関する情報と、子アカウントのリストが含まれています。

このフラットなデータベース構造を階層に変換する最も簡単な方法は何ですか? LINQ で直接実行できますか?それとも、後でループして手動でビルドする必要がありますか?

モデル

public class AccountInfo
{
    public int AccountKey { get; set; }
    public int? ParentKey { get; set; }
    public string AccountName { get; set; }

    public List<AccountInfo> Children { get; set; } 
}

リンク

var accounts =
    from a in context.Accounts
    select new AccountInfo
        {
            AccountKey = a.AccountKey,
            AccountName = a.AccountName,
            ParentKey = a.ParentKey                            
        };
4

2 に答える 2

1

現在持っている構造は、実際には階層 (隣接リスト モデル) です。問題は、この階層モデルを保持しますか? もしそうなら、MVCTreeView と呼ばれる Nuget パッケージがあります。このパッケージは、記述したテーブル構造で直接動作します。その中で、UI のツリー ビューを作成したり、各レベルで CRUD 操作を実装したりできます。 C# 経由で SQL の隣接リスト モデル テーブルをカスケード削除します。詳細が必要な場合は、コメントを残してください。この投稿を編集します。

http://www.codeproject.com/Tips/668199/How-to-Cascade-Delete-an-Adjace

于 2013-10-14T19:54:36.577 に答える