作为我的领域类,我有Person和FavoritePerson类,如下所示。ViewModel Structure Decision
public class CompanyPerson : ICompanyPerson
{
[Key]
public Guid PersonId { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
public class CompanyFavoritePerson : IFavoritePerson
{
[Key]
public Guid FavoritePersonId { get; set; }
[Column(TypeName = "datetime2")]
public DateTime CreateDate { get; set; }
public Guid? CompanyPerson_PersonId { get; set; }
[StringLength(128)]
public string CompanyUser_UserId { get; set; }
public virtual CompanyPerson CompanyPerson { get; set; }
public virtual CompanyUser CompanyUser { get; set; }
}
在我的web应用程序中,我需要显示收藏夹列表。所以我的观点模型就是这样。
public class FavoritePersonViewModel
{
public Guid FavoritePersonId { get; set; }
public DateTime CreateDate { get; set; }
public Guid? CompanyPerson_PersonId { get; set; }
public string CompanyUser_UserId { get; set; }
//Option1: PersonViewModel PersonViewModel {get; set; }
//Option2: public string Title {get;set;}
}
因为我需要显示用户最喜欢的标题列表(其中冠军属于Person类)的方式将匹配最佳做法?
从另一个viewModel引用viewModel或扩展viewModel所需的额外属性,并将其填充到业务层?
我会亲自去与选项2,但它确实很主观的,依赖于其他架构 – Jedediah
要么将工作,所以这个问题太的意见为主。如果您在视图中需要的'PersonViewModel'的唯一属性是'Title',那么我会亲自使用选项2 –
我知道这是非常基于观点的问题。但是,从另一个ModelView引用ModelView的想法对我来说有点奇怪。我无法在互联网上找到明确的声明。另一方面,选项2将使我远离DRY原则。这就是为什么我想获得关于设计决策的明确声明。 –