美好的一天!
我刚刚开始使用MVC3,我的应用程序中有2个模型,即“Page”和“PageHistory”都具有相同的属性。除了“PageHistory”有一个名为“PageId”的额外属性,它引用了“Page”模型。
我的问题是我是以正确的方式做到的吗?或者我应该为此使用继承。 如果继承是一个选项,我该如何处理,任何例子都会对我有所帮助。
我的模型如下所示:
public class Page
{
private readonly IndianTime _g = new IndianTime();
public Page()
{
CreatedOn = _g.DateTime;
Properties = "Published";
Tags = "Page";
RelativeUrl = string.Empty;
}
public string Path
{
get { return (ParentPage != null) ? ParentPage.Heading + " >> " + Heading : Heading; }
}
[Key]
public int Id { get; set; }
[StringLength(200), Required, DataType(DataType.Text)]
public string Title { get; set; }
[StringLength(200), Required, DataType(DataType.Text)]
public string Heading { get; set; }
[MaxLength, Required, DataType(DataType.Html)]
public string Content { get; set; }
[Display(Name = "Reference Code"), ScaffoldColumn(false)]
public string ReferenceCode { get; set; }
[Required]
[Remote("CheckDuplicate", "Page", ErrorMessage = "Url has already taken", AdditionalFields = "initialUrl")]
public string Url { get; set; }
[Display(Name = "Created On"), ScaffoldColumn(false)]
public DateTime CreatedOn { get; set; }
//Parent Page Object (Self Reference: ParentId = > Id)
[Display(Name = "Parent Page")]
public int? ParentId { get; set; }
[DisplayFormat(NullDisplayText = "Root")]
public virtual Page ParentPage { get; set; }
public virtual ICollection<Page> ChildPages { get; set; }
}
答案 0 :(得分:0)
我不认为继承是正确的方式,目前的结构对我来说没问题。
看看你是否选择将Page作为父级,而Pagehistory是从Page继承的,实际上它不仅仅是简单的页面历史。
你的继承理念应该始终来自现实世界的实现,例如。可能有差异。所有页面都是从超级页面类型继承而来的,而页面历史记录只是页面的一个属性,而不是一个包含其中属性的复杂属性。