我正在开展一个项目。
有一些表CIRCLE,DIVISION,SUBDIVISION和FEEDERS。现在,这些表的层次结构是CIRCLE有很多DIVISIONS,DIVISION有很多细分,Subdivision有很多FEEDERS。所以这些表之间存在一对多的关系。
现在,我必须使用c#和OOP概念构建应用程序。
任何正文都可以帮助我如何使用OOP概念在c#应用程序中实现此表层次结构?
答案 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