以下數據場景開發我的應用程序的最佳方式是什麼?構建此項目的最佳方式
爲了簡單起見,我的模型有一個稱爲項目與標準共同領域,專案編號,名稱,起始日期爲基表,所有者等
它與該保持數據的其他表一比一的關係不同的項目類型,例如ConstructionProject,FinanceProject,HolidayProject等。這些表中的每一個都通過主鍵ProjectId鏈接到基本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; }
}
或者我應該有其他類型的項目作爲自己的類項目的對象? 例如:
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
}
不知道控制器會是什麼樣處理繼承第一種情況下的對象?
該項目是一個使用實體框架的標準C#MVC項目。對於不同的項目類型,可能會有多個鏈接表。 那麼哪個選項是最佳實踐,以及如何建模控制器(如果與我建議的方式不同) 或者還有更好的方法嗎?
感謝
編輯 - 只是爲了增加一些更多的信息 - 基類也可以存在於它自己的,而不是僅僅是一個基類,換句話說,該項目表可以有沒有相關記錄記錄在其他表中,如果有幫助?
使用類似於第一個選項的東西 - 防止重複工作 - 允許輕鬆擴展。 – user1666620 2014-12-04 14:30:44
從一個數據庫一點上,我會選擇第二個選項 – Marthijn 2014-12-04 14:32:40
參見:如何決定使用是否屬於或有關係(http://stackoverflow.com/questions/6395366/how-to-decide-whether -use-is-a-or-has-a-relation) – Corak 2014-12-04 14:37:30