与c#和OOP概念实现一对多的关系

时间:2012-09-09 11:08:42

标签: c# one-to-many

我正在开展一个项目。

有一些表CIRCLE,DIVISION,SUBDIVISION和FEEDERS。现在,这些表的层次结构是CIRCLE有很多DIVISIONS,DIVISION有很多细分,Subdivision有很多FEEDERS。所以这些表之间存在一对多的关系。

现在,我必须使用c#和OOP概念构建应用程序。

任何正文都可以帮助我如何使用OOP概念在c#应用程序中实现此表层次结构?

1 个答案:

答案 0 :(得分:2)

我强烈建议您使用ORM framework,例如LINQ to SQL或(更高级)Entity Framework

因为这听起来很像家庭作业,所以让我们以OOP友好的方式解决它,通过定义抽象基类来避免冗余:

public abstract class OneToMany<TMany>
{
    private readonly IList<TMany> children = new List<TMany>();
    public IList<TMany> Children { get { return children; }}  
}

public class Circle : OneToMany<Division>
{   
}

public class Division : OneToMany<Subdivision>
{   
}

public class Subdivision : OneToMany<Feeder>
{   
}

public class Feeder
{    
}

<强>用法

var circle = new Circle();
circle.Children.Add(new Division());
var subdivision = new Subdivision();
subdivision.Children.Add(new Feeder());
subdivision.Children.Add(new Feeder());
circle.Children.First().Children.Add(subdivision);

<强>解释

OneToMany<T>generic抽象基类,所有属于一对多关系的类都派生自。它接受类型参数TMany,它指示一对多关系的 many 侧的元素类型。

所以,Circle OneToMany<Division>(一个圈子有多个分区),而Division {{1等等。

定义了这个类层次结构后,我们现在可以构建一个表示数据库行的对象树,如 Usage 部分所示。我们可以这样想象:

     Circle
       |
    Division
       |
   Subdivision
   /         \
 Feeder    Feeder