如何设计Parent-Child类。
注意:这里Parent不是基类,而是显示一对多的关系。
接近“A”
public class Company
{
public int CompanyID;
...
public IList<Branch> Branches;
}
public class Branch
{
}
Appraoch“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)如果我们看到View屏幕然后方法“A”看起来很好,如果我们看到添加/编辑屏幕方法“B”看起来很好。
2)在使用方法“A”时,当我必须返回分支数据时,我必须实际返回公司类型而不是分支类型:
Company GetBranch(int BranchID)
3)我们的数据库设计基于方法“B”,其中分支表存储CompanyID
有人可以建议一下这个好方法吗?
答案 0 :(得分:2)
IMO没有“权利”这样做。这一切都取决于您打算如何使用和存储/检索数据。
将分支机构存储在公司之下我的原因是巨大的流量开销(因为即使您关心的只是公司或特定分支,您将始终通过所有分支机构),仅使用ID我会导致额外的“查询”以便加载所有相关数据。 我将使用与实体框架的工作方式类似的实现:
我会拥有分支和公司ID存储库并保留导航属性(Comany.Branches,Branch.Company)并且有一个函数来填充仅在需要时调用的属性。
例如,您可以使用仅返回公司的GetCompany(id)
函数和将返回填充了其分支的公司对象的GetCompanyWithBranche(id,int? brandchid)
(如果指定了id,则返回单个分支)。这样,您就可以确定要检索的数据量。