ORMLite服务堆栈自参考表

时间:2018-12-09 18:09:08

标签: servicestack ormlite-servicestack

我有一类公司和子公司。这些可以嵌套到任何级别并显示在树视图中。我试图找出如何使用以下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; }
    }

1 个答案:

答案 0 :(得分:1)

要保持树型关系,您只需要在int? ParentId表中有一个可为空的Company,其中具有NULL的ParentId的公司是根公司,同时遍历其他公司填充由父ID索引的Dictionary<int,List<Company>>

这与OrmLite Self Reference无关,后者仅意味着将FK引用维护为包含该引用的表上的其他表。