0

如何设计亲子班。

注意:这里的 Parent 不是基类,而是显示一对多关系。

接近“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)我们的数据库设计基于方法“B”,其中分支表存储公司ID

有人可以建议什么是好的方法吗?

4

1 回答 1

2

IMO 没有“权利”这样做。这完全取决于您计划如何使用和存储/检索数据。

将分支机构存储在公司下会导致巨大的流量开销(因为即使您只关心公司或特定分支机构,您也总是会通过所有分支机构),单独使用 ID 会导致额外的“查询”以加载所有相关数据。我会采用类似于实体框架工作方式的实现:

我将拥有分支机构和公司 ID 存储库并保留导航属性(Comany.Branches、Branch.Company),并具有填充仅在需要时才调用的属性的函数。

例如,您可以拥有GetCompany(id)仅返回公司的函数,并将GetCompanyWithBranche(id,int? brandchid)返回填充了其分支的公司对象(如果指定了 id,则返回单个分支)。这样,您将能够确定要检索的数据量。

于 2013-11-11T11:50:07.900 回答