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



我正在做一个项目。

有一些表格CIRCLE、DIVISION、SUBDIVISION和FEEDERS。现在,这些表的层次结构是CIRCLE有很多DIVISION,DIVISION有很多细分,subdivision有很多FEEDERS。因此,这些表之间存在一对多的关系。

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

有人能帮助我如何使用OOP概念在c#应用程序中实现这种表层次结构吗?

我强烈建议使用ORM框架,如LINQ to SQL或(更高级的)实体框架。

由于这听起来很像家庭作业,无论如何,让我们以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>是一对多关系中的所有类都派生自的通用抽象基类。它接受类型参数TMany,该参数指示一对多关系的many侧的元素类型。

因此,CircleOneToMany<Division>(一个圆有多个分割),而Division则是OneToMany<Subdivision>,依此类推

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

圆圈|分开|细分/\进料器进料器

最新更新