0

私はプロジェクトに取り組んでいます。

いくつかのテーブル CIRCLE、DIVISION、SUBDIVISION、FEEDERS があります。現在、これらのテーブルの階層は、CIRCLE には多くの DIVISION があり、DIVISION には多くのサブディビジョンがあり、Subdivision には多くの FEEDERS があります。したがって、これらのテーブル間には 1 対多の関係があります。

次に、C# と OOP の概念を使用してアプリケーションをビルドする必要があります。

OOP の概念を使用して C# アプリケーションでこのテーブル階層を実現する方法を教えてくれる人はいますか?

4

1 に答える 1

2

LINQ to SQLや (より高度な) Entity FrameworkなどのORM フレームワークを使用することを強くお勧めします。

これは宿題のように聞こえるので、抽象基本クラスを定義して冗長性を回避しながら、とにかく 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>1 対多の関係にあるすべてのクラスの派生元となる汎用抽象基本クラスです1 対多の関係の多側のTMany要素の型を示すon 型パラメーター を受け入れます。

つまり、Circle OneToMany<Division>(1 つの円に複数の分割Division がある)、 は OneToMany<Subdivision>などです。

このクラス階層が定義されたので、「使用方法」セクションで示したように、データベース行を表すオブジェクト ツリーを構築できます。これを次のように視覚化できます。

     サークル
       | |
    分割
       | |
   区画
   / \
 フィーダー フィーダー
于 2012-09-09T11:22:43.357 に答える