我正在做一个项目。
有一些表格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侧的元素类型。
因此,Circle
是OneToMany<Division>
(一个圆有多个分割),而Division
则是OneToMany<Subdivision>
,依此类推
定义了这个类层次结构后,我们现在可以构建一个表示数据库行的对象树,如Usage部分所示。我们可以这样想象:
圆圈|分开|细分/\进料器进料器