我需要一些确认,我会以正确的方式做一些事情,否则我会犯下可怕的错误:) 1)我将数据访问层(MyProject.Domain)放在sepparate程序集中。在那里,我有实体对象“User”,它与我的数据库中的“User”表具有1:1关系的属性。我还将此用户从“MembershipUser”扩展,因为我使用自定义架构进行成员资格。这是存储MembershipUser实体的好位置吗?
2)我在数据库中有“Image”表,在我的域库中有“Image”实体。数据库中的图像具有“AuthorId”列,其为FK到“用户”表。图像也包含“评论”列表。所以我像这样构建Image域对象:
public class Domain
{
public int ImageId{get;set;}
public string Name{get;set;}
public Author Author{get;set;}
public IEnumerable<Comment> Comments{get;set;}
}
这是好方法还是我应该在ViewModel类中汇编所有数据?
答案 0 :(得分:1)
您应该真正区分域模型和视图模型。域模型是表示域业务实体的类。它可能是EF自动生成的类或其他什么。因此,即使是聚合类,它们仍然是域模型,因为它们聚合域实体并且可以与其他域模型一起存储。
视图模型是为给定视图专门定义的类。视图模型总是在ASP.NET MVC项目中定义,因为它们与特定视图紧密耦合,这些视图本身是在ASP.NET MVC项目中定义的。域模型可以在单独的程序集中定义。它们也可以在其他应用程序中重用。将您的域模型视为您业务的核心。如果明天的ASP.NET MVC不再是现代的,而且还有其他东西出现,你应该仍然可以重用你的域模型。对于某些给定的特定视图,视图模型只是您的域模型的特定表示。