返回实体及其父级(如果存在)

问题描述 投票:0回答:1

我有一个代表类别的模型。当我的程序运行时,它会从 SQLite 数据库中提取所有类别,并将它们放入某种数据网格中。

每个类别本身可能有一个父级,但没有一个父级是任何其他类别的父级(即它不是无限向上的树)。最大为 1 级。

如果它有一个父级,我希望返回有关其父级以及其自身的信息。如果它没有类别,那么类别栏中将为空白。

这是我的 WinUi 3 程序当前的样子。我想做的是说出“鸡肉 | 1”的位置,我希望它改为“鸡肉 | 肉”,因为 1 是肉类类别的主键,而鸡肉是该类别的子类别。

Current Table

型号

public class IngredientCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Parent { get; set; }

    public IngredientCategory(){}

    public IngredientCategory(int id, string name, int parent)
    {
        Id = id;
        Name = name;
        Parent = parent;
    }
}
c# sqlite entity-framework-core winui-3
1个回答
0
投票

你应该能够做到这一点:

public class IngredientCategory
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int? ParentId { get; set; }          

    public IngredientCategory Parent { get; set; }
}

public class YourDbContext: DbContext
{
    public DbSet<IngredientCategory> IngredientCategories { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<IngredientCategory>()
                    .HasOptional(c => c.Parent)
                    .WithMany() // Or WithOne() - you have to check
                    .HasForeignKey(c => c.ParentId);
    }
}

然后您可以查询:

dbContext
   .IngredientCategories
   .Include(x => x.Parent)
   .FirstOrDefault(x => x.Id == 1)
© www.soinside.com 2019 - 2024. All rights reserved.