构建此项目的最佳方式

时间:2014-12-04 14:29:14

标签: c# asp.net-mvc

使用以下数据方案开发应用程序的最佳方法是什么?

为简单起见,我的模型有一个名为Project的基表,标准的公共字段是ProjectId,Name,StartDate,Owner等。

它与维护不同项目类型数据的其他表具有一对一的关系,例如,ConstructionProject,FinanceProject,HolidayProject等。这些表中的每一个都通过其主键链接回基础Project表,专案编号。

我的类应该基于基类Project而其他类是否继承自此类? 如:

public class Project
{
    public int ProjectId { get; set; }
    public string Name { get; set; }
    public DateTime StartDate { get; set; }
    public string Owner { get; set; }
}

public class ConstructionProject : Project
{
    public string Location { get; set; }
    public string Contractor { get; set; }
}

或者我应该将其他类型的项目作为自己的类与Project对象? 例如:

public class ConstructionProject
{
    public Project Project { get; set; }
    public string Location { get; set; }
    public string Contractor { get; set; }
}

作为一个标准的MVC项目,我可以让控制器处理上面第二个场景的crud操作:

public ActionResult Update(Project project)
{
    // update project object
}

public ActionResult Update(ConstructionProject constructionProject)
{
    // update constructionProject object
    // update project object
}

在第一种情况下,不确定控制器如何处理继承的对象?

该项目是使用Entity Framework的标准C#MVC项目。对于不同的项目类型,可能存在多个链接表。 那么哪个选项是最佳实践以及如何对控制器进行建模(如果与我建议的方式不同?) 或者有更好的方法吗?

由于

编辑 - 只是添加更多信息 - 基类也可以存在于其自身而不仅仅是基类,换句话说,Project表可以包含没有相关记录的记录其他表格,如果有帮助吗?

1 个答案:

答案 0 :(得分:2)

这是一个常见的问题,它有一个共同的答案。继承或组成。答案是:如果A is B然后A inherits B,则A uses B。例如,cat is animaltable has an array of four legs and one board

在你的情况下,它似乎是第一选择。