据我了解,域模型是仅描述数据(聚合根)的类。它们是 POCO,不引用外部库(没什么特别的)。
另一方面,视图模型是包含域模型对象以及所有接口特定对象(如SelectList
. 一个 ViewModel 包括using System.Web.Mvc;
.
存储库从数据库中提取数据并通过域模型对象将它们提供给我们。 什么机制或设备创建视图模型对象,从数据库中填充它们? 它会是一个可以访问数据库的工厂吗?您会将诸如 System.Web.Mvc 之类的视图特定类引入存储库吗?还有什么?
例如,如果您有一个城市下拉列表,您将在 View Model 对象的根目录中引用一个 SelectList 对象,就在您的 DomainModel 引用旁边:
public class CustomerForm {
public CustomerAddress address {get;set;}
public SelectList cities {get;set;}
}
城市应该来自数据库并采用选择列表对象的形式。希望您不要创建特殊的 Repository 方法来仅提取不同的城市,然后仅创建冗余的第二个 SelectList 对象,以便您拥有正确的数据类型。