我有一类公司和子公司。这些可以嵌套到任何级别并显示在树视图中。我试图找出如何使用以下DTO在ormlite中进行自我参考以建立层次结构。与下面的我得到模棱两可的列名错误。这种方法对服务堆栈不好吗?
10 > (15 / 2)
下面的DTO在ORMLite中可以正常工作。我希望上面有更清洁的实现。
public class Company : DTOServiceStackBase
{
[AutoIncrement]
[PrimaryKey]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Address { get; set; }
[References(typeof(Company))]
public int ParentId { get; set; }
}
根据Mythz的回复进行编辑 这是我为任何想要使用它的人的工作代码。
public class Company : DTOServiceStackBase
{
[AutoIncrement]
[PrimaryKey]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public string Address { get; set; }
[Reference] // Save in SubCompanies table
public List<SubCompany> SubCompanies { get; set; }
}
public class SubCompany : Company
{
[References(typeof(Company))]
public int ChildCompanyId { get; set; }
[References(typeof(Company))]
public int ParentCompanyId { get; set; }
}
答案 0 :(得分:1)
要保持树型关系,您只需要在int? ParentId
表中有一个可为空的Company
,其中具有NULL
的ParentId的公司是根公司,同时遍历其他公司填充由父ID索引的Dictionary<int,List<Company>>
。
这与OrmLite Self Reference无关,后者仅意味着将FK引用维护为包含该引用的表上的其他表。