0

親子クラスの設計方法。

注: ここでの Parent は基本クラスではなく、1 対多の関係を示しています。

アプローチ「A」

public class Company
{
   public int CompanyID;
   ...
   public IList<Branch> Branches;
}

public class Branch
{
}

アプローチ「B」

public class Company
{   
   public int CompanyID;
   ...
}

public class Branch
{
   public int CompanyID; //which represents company object
}

分岐画面のUIデザイン確定:=

閲覧画面のツリー表示:-

Company A
    Branch 1
    Branch 2
Company B
    Branch 3
    Branch 4
    Branch 5

画面の追加/編集 (2 つの個別の画面):-

Company - Company Drop-down
other attributes of Branch

1) ビュー画面が表示された場合、アプローチ "A" は正常に見え、追加/編集画面が表示された場合、アプローチ "B" は正常に見えます。

2)アプローチ「A」を使用しているときに、ブランチデータを返す必要がある場合は、ブランチタイプではなく会社タイプを実際に返す必要があります。

Company GetBranch(int BranchID)

3) 当社の DB 設計は、Branch Table に CompanyID が格納されるアプローチ "B" に基づいています。

誰かが良いアプローチを提案できますか?

4

1 に答える 1

2

IMOには、これを行う「権利」はありません。それはすべて、データの使用方法と保存/取得方法に依存します。

企業の下にブランチを保存すると、膨大なトラフィックのオーバーヘッドが発生します (会社または特定のブランチだけを気にする場合でも、常にすべてのブランチを通過するため)。データ。Entity フレームワークの仕組みと同様の実装を使用します。

ブランチと会社の ID リポジトリを用意し、ナビゲーション プロパティ (Comany.Branches、Branch.Company) を保持し、必要な場合にのみ呼び出されるプロパティを埋める関数を用意します。

たとえば、会社のみを返し、そのブランチ (または id が指定されている場合は単一のブランチ) で満たされた会社オブジェクトをGetCompany(id)返す関数を持つことができます。GetCompanyWithBranche(id,int? brandchid)このようにして、取得するデータの量を決定できます。

于 2013-11-11T11:50:07.900 に答える