假設我通過實體框架創建了一些模型,其中一個模型被稱爲Paper_Results。這是類可能看起來如何:在沒有在asp.net中修改它的情況下使用基礎模型類mvc
public partial class Paper_Results
{
public string Color { get; set; }
public int Height { get; set; }
public int Width { get; set; }
}
我想使用這個類像一個域模型。現在讓我們說我創建一個類從Paper_Results的導出與添加的接口
public class Construction_Paper : Paper_Results, IMeasurementType
{
[Required]
public (new?) string Color { get; set; }
[Required]
[Range(1, Int32.MaxValue, ErrorMessage = "Value should be greater than or equal to 1")]
public (new?) int Height { get; set; }
[Required]
[Range(1, Int32.MaxValue, ErrorMessage = "Value should be greater than or equal to 1")]
public (new?) int Width { get; set; }
public virtual string MeasurementType
{
get { return "inches"; }
}
}
現在,當我創建我的ViewModel,我會用派生類來代替:
public class Construction_Paper_ViewModel
{
Construction_Paper cp;
List<Construction_Paper> cpList;
string title;
public Construction_Paper_ViewModel()
{
title = "Construction Paper";
cp = new Construction_Paper();
cpList = new List<Construction_Paper>();
}
}
我知道我應該是對於非負整數使用uint而不是int,但我只是想向代碼添加更多數據註釋。我問的是從Paper_Result類派生出來的最好的OOP技術是什麼,所以我根本不需要修改它。原因是因爲如果我創建一個新的解決方案和/或項目,當我使用Entity Framework自動重新生成它時,我不想對它做任何修改。我應該使用陰影嗎?或派生類中的新關鍵字?或者你們有其他更好的想法嗎?
自動生成的EF模型在其方法中不包含「虛擬」,因此我提出了陰影和新關鍵字的原因。
謝謝。你還可以添加其他屬性/方法嗎?我認爲你可以。 – 2014-09-25 14:41:35
@AndyNarain - 你有幾個選項,你可以讓Partial類添加額外的項目......但明白,繼承定義了「是 - 一個」關係。它不應該簡單地用於保存擊鍵。 – 2014-09-25 15:59:25
這就是我最終做的。我創建了一個附加屬性的好友類。 – 2014-09-26 18:05:58