如何使用 Entity Framework 内核为 parent-tree 设计建模?
How to model a parent-tree design using Entity Framework Core?
我的目标是在财务报告的下拉列表中以树状格式列出具有 parent 个办公室的办公室。我将 .NET Core 2.1 与 Entity Framework 核心一起使用,数据通过 Web API 公开。
我要的结果:
A
A1
A2
A2A
B
B1
B1A
B2
这是我当前的模型:
public class OfficeSymbol
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public bool Inactive { get; set; }
public int ParentId { get; set; }
[Required]
public int Level { get; set; }
}
我试图使用 int Level
来确定 child 的嵌套深度。
我还尝试了以下方法以及 Cascade.NoAction
,但 Entity Framework 不允许键约束:
public class OfficeSymbol
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public bool Inactive { get; set; }
public int ParentId { get; set; }
[Required]
public int Level { get; set; }
[ForeignKey("ParentId")]
public OfficeSymbol Parent { get; set; }
[InverseProperty("Parent")]
public ICollection<OfficeSymbol> Children { get; set; }
}
如有任何帮助,我们将不胜感激。
不幸的是,EF Core 无法将第一个 table 样本中的现有 table 调整为第二个 table 样本。我创建了一个新的对象模型并按此方式制作。
public class Office
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public bool Inactive { get; set; }
public int? ParentId { get; set; }
[ForeignKey("ParentId")]
public OfficeSymbol Parent { get; set; }
[InverseProperty("Parent")]
public ICollection<OfficeSymbol> Children { get; set; }
}
我现在要返回并将我的代码修改为新对象。它主要是查找替换,但我正在修改一些调用。
这在 SQL 中正确构建,并确保 parentId 对于根级对象可为空。
我的目标是在财务报告的下拉列表中以树状格式列出具有 parent 个办公室的办公室。我将 .NET Core 2.1 与 Entity Framework 核心一起使用,数据通过 Web API 公开。
我要的结果:
A
A1
A2
A2A
B
B1
B1A
B2
这是我当前的模型:
public class OfficeSymbol
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public bool Inactive { get; set; }
public int ParentId { get; set; }
[Required]
public int Level { get; set; }
}
我试图使用 int Level
来确定 child 的嵌套深度。
我还尝试了以下方法以及 Cascade.NoAction
,但 Entity Framework 不允许键约束:
public class OfficeSymbol
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public bool Inactive { get; set; }
public int ParentId { get; set; }
[Required]
public int Level { get; set; }
[ForeignKey("ParentId")]
public OfficeSymbol Parent { get; set; }
[InverseProperty("Parent")]
public ICollection<OfficeSymbol> Children { get; set; }
}
如有任何帮助,我们将不胜感激。
不幸的是,EF Core 无法将第一个 table 样本中的现有 table 调整为第二个 table 样本。我创建了一个新的对象模型并按此方式制作。
public class Office
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public bool Inactive { get; set; }
public int? ParentId { get; set; }
[ForeignKey("ParentId")]
public OfficeSymbol Parent { get; set; }
[InverseProperty("Parent")]
public ICollection<OfficeSymbol> Children { get; set; }
}
我现在要返回并将我的代码修改为新对象。它主要是查找替换,但我正在修改一些调用。
这在 SQL 中正确构建,并确保 parentId 对于根级对象可为空。