我有一个代表类别的模型。当我的程序运行时,它会从 SQLite 数据库中提取所有类别,并将它们放入某种数据网格中。
每个类别本身可能有一个父级,但没有一个父级是任何其他类别的父级(即它不是无限向上的树)。最大为 1 级。
如果它有一个父级,我希望返回有关其父级以及其自身的信息。如果它没有类别,那么类别栏中将为空白。
这是我的 WinUi 3 程序当前的样子。我想做的是说出“鸡肉 | 1”的位置,我希望它改为“鸡肉 | 肉”,因为 1 是肉类类别的主键,而鸡肉是该类别的子类别。
型号
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;
}
}
你应该能够做到这一点:
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)