在我的应用程序中,我的文件夹可以包含其他文件夹。 它们具有各种各样的属性,如下所示:
public class Folder
{
public Folder()
{
Sets = new Collection<Set>();
Folders = new Collection<Folder>();
Stage = Stage.one;
IsArchived = false;
DateCreated = DateTime.Now;
}
// Primitive Properties
[Required]
[Key]
public virtual int FolderId { get; set; }
public virtual int? ParentFolderId { get; set; }
[ForeignKey("ParentFolderId")]
public virtual Folder ParentFolder { get; set; }
[Required]
public int UserId { get; set; }
[Required]
public virtual string Title { get; set; }
public virtual string Details { get; set; }
[Required]
public virtual Stage Stage { get; set; }
[Required]
public virtual bool IsArchived { get; set; }
[Required]
public virtual DateTime DateCreated { get; set; }
[ForeignKey("FolderId")]
public virtual ICollection<Set> Sets { get; set; }
[ForeignKey("ParentFolderId")]
public virtual ICollection<Folder> Folders { get; set; }
}
现在,应用程序的每个用户都有一个“主文件夹”-一个起点。 但是,主文件夹不需要上述属性的一半。 我认为我有两个选择:
1)使用此实体,只需添加“ isHomeFolder”作为属性。 这很简单,但是意味着我将通过有线方式为JSON请求发送空白的[Required]属性-主文件夹没有标题,无法存档等。
2)创建仅具有必填字段的另一个实体,并在其中复制必需的属性。 这似乎不是很干,但是感觉比第一种更好。
作为初学者,我不确定是否还有其他选择。 这里有标准的方法/解决方案吗?
如果很重要,我将基于Entity Framework Code-First + WebAPI。