Search code examples
parentid

How can I set parent-child relation on same table using ActiveRecord?


How can I set parent-child relation on same table?

Id int, 
title string, 
ParentId int  ---> this is refer to Id

Solution

  • What ActiveRecord implementation are you using?

    In Castle ActiveRecord, if your table looked like this:

    table Document (
       Id int primary key,
       ParentDocumentId int,
       Title string
    )
    

    you'd use the following syntax:

    [ActiveRecord(Table = "Document")]
    public class Document : ActiveRecordBase<Document> {
    
        private int id;
        private Document parent;
        private string title;
        private List<Document> children = new List<Document>();
    
        [PrimaryKey]
        public int Id {
            get { return id; }
            set { id = value; }
    
        }
    
        [BelongsTo("ParentDocumentId")]
        public virtual Document Parent {
            get { return parent; }
            set { parent = value; }
        }
    
        [HasMany(Table = "Document", ColumnKey = "ParentDocumentId", Inverse = true, Cascade = ManyRelationCascadeEnum.All)]
        public IList<Document> Children {
            get { return children.AsReadOnly(); }
            private set { children = new List<Document>(value); }
        }
    
        [Property]
        public string Title {
            get { return title; }
            set { title = value; }
        }
    }