为什么 TreeView 不显示子项

Why isn't the TreeView showing the Children

我正在用 .Net 核心 (C#) 编写程序,它使用 EF 核心访问 SQLite 数据库。

namespace BtmManager.Models
{
    public class Projekt
    {
        [Key]
        public int ProjektId { set; get; }
        [Required]
        public int BtmBestandsbuchNr { get; set; }
        [Required]
        public int Stufenanzahl { get; set; }
        public string Produktbezeichnung { get; set; }
        [Required]
        public int ProduktNr { get; set; }
        public DateTime Zeitraum { get; set; }

        public IList<Stufe> Stufen { get; set; }
    }

  public class Stufe
    { 
        [Key]
        public int StufId { set; get; }
        [Required]
        public int StufenNummer { get; set; }
        public string MaterialName { get; set; }
        [Required]
        public int AnzahlEinträge { get; set; }

        public int ProjektId { get; set; }
        public Projekt Projekte { get; set; }

        public IList<Eintrag> Einträge { get; set; }
    }

  public class Eintrag
    {
        [Key]
        public int EintragId { set; get; }
        [Required]
        public byte Einheit { get; set; }
        public string LfdNr { get; set; }
        public DateTime Datum { get; set; }
        public float Anfangsbestand { get; set; }
        public float TheroZugang { get; set; }
        public float PrakZugang { get; set; }
        public float Arbeitsverlust { get; set; }
        public float Abgang { get; set; }
        public float AktuellerBestand { get; set; }
        public string Bemerkung { get; set; }

        public int StufId { get; set; }
        public Stufe Stufen { get; set; }
    }
}

我输入了一些测试值
ProjektId BtmBestandsbuchNr Stufenanzahl Produktbezeichnung
1 jnjnijni 2 khih
2 phgztf 1 wdfw
3 yawesxdr 2 ewg

StufId StufenNummer MaterialName AnzahlEinträge ProjektId
1 1 nvjgh 3 1
2 2 jljk 3 1


层次结构是:

我现在的目标是在 TreeView 中显示 WPF 中的层次结构。

 <TreeView x:Name="TreeView" Margin="5,0,5,0" Grid.Row="1" Grid.RowSpan="7" ItemsSource="{Binding}">
                <TreeView.Resources>
                    <HierarchicalDataTemplate DataType="{x:Type self:Projekt}" ItemsSource="{Binding Stufen}">
                        <TextBlock Text="{Binding Path=Produktbezeichnung}" />
                    </HierarchicalDataTemplate>
                    <DataTemplate DataType="{x:Type self:Stufe}">
                        <TextBlock Text="{Binding Path=MaterialName}" />
                    </DataTemplate>
                </TreeView.Resources>
            </TreeView>

如您所见,项目显示正确,但没有子项! 有什么想法吗??

如果您需要查看完整代码,我已将其上传至 GitHub

查看源代码。

问题是由 entity framework 的默认行为引起的。

默认情况下,相关实体是惰性(而不是急切)加载的。

如果您 select 一个实体,它的相关 children 不会被阅读。

您需要包括相关的 children - 在本例中是您的 Stufen。

有两种方法可以做到这一点

How to include() nested child entity in linq

如果我正确地遵循了您的实体名称:

 .Include("Stufen").ToList();