6
ツリー構造を開発する際に、Entity Frameworkのコード・ファースト・アプローチに問題があります。EFコードファースト。親の子コレクションがnullです
私はデータベースにいくつかのツリーを格納する必要があります。私のテーブルにはId、Name、Parent_Idという3つのフィールドがあります。私はツリーノードクラス
modelBuilder.Entity<TreeNode>().HasOptional(c => c.Parent)
.WithMany(c => c.Children)
.Map(m => m.MapKey("Parent_Id"));
問題は、EFによって返されたときに子供たちは常にnullであるということであるため、以下の設定を追加しました
public class TreeNode
{
public TreeNode()
{
Children = new List<TreeNode>();
}
public int Id { get; set; }
[Required]
public String Name { get; set; }
public virtual IList<TreeNode> Children { get; set; }
public virtual TreeNode Parent { get; set; }
}
: は、私は私の溶液中で、次のクラスを作成しました。
しかし、いくつかの子ノードを取得する場合は、Parentプロパティを使用してParentノードを取得し、次にChildrenプロパティを正しく入力します。
ここで何が間違っているのか分かりません。あなたのアドバイスを探しています。
更新:@Cuongが示唆したように、ナビゲーションプロパティにvirtual修飾子のさらには、virtual
として
ありがとう:親をロードする際
OR熱心な負荷子供:これは、遅延ロード(あなたが実行されるサーバーに、子どもたちに追加のクエリにアクセスしようとするたびに)できるようになります。仮想プロパティの場合でも子は返されません。 – lostaman
@ lostamanコンテキスト 'context.Configuration.LazyLoadingEnabled = true;' lazy-loadingが有効になっていることを確認してください。 –
ありがとう@lazyberezovsky。このオプションはfalseに設定されています。これをtrueに変更しましたが、子コレクションにアクセスしようとすると「このコマンドに関連付けられている開いているDataReaderが最初に閉じる」というエラーが表示されます。 – lostaman