What is the best way to associate Parent and Child data model object?

2.2k Views Asked by At

My code below looks so complicated when making association between Parent and Child.

Question: What is the best way to associate Parent and Child data model object?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using ConsoleApplication1;

class Child
{
    public string Name { get; set; }
    public Parent Parent { get; set; }
}


class Parent
{
    public string Name { get; set; }
    public IEnumerable<Child> Children { get; set; }
}


class Program
{
    static void Main(string[] args)
    {
        Parent p1 = new Parent { Name = "P1" };

        Child c1 = new Child { Name = "C1" };
        c1.Parent = p1;

        Child c2 = new Child { Name = "C2" };
        c2.Parent = p1;


        List<Child> children = new List<Child>();
        children.Add(c1);
        children.Add(c2);

        p1.Children = children;
    }

}
3

There are 3 best solutions below

1
MacX On BEST ANSWER

Maybe you should implement some helper methods into the class, which encapsulate some basic thinks:

public class Parent {

....
    public void AddChild(Child child) {
        child.Parent = this;
        this.Children.Add(child);
    }

    public void RemoveChild(Child child) {
        child.Parent = null;
        this.Children.Remove(child);
    }
}


public class Child {
    private Child() {}

    public static Child CreateChild(Parent parent) {
        var child = new Child();
        parent.AddChild(child);
        return child;
    }
}
0
bobwah On

This question might help:

Tree data structure in C#

0
Jaroslav Jandek On
class Parent
{
  ...
  public Child AddChild(string name)
  {
    return this.AddChild(new Child(name));
  }

  public Child AddChild(Child c)
  {
    c.Parent = this;
    this.children.Add(c);

    return c;
  }
}