据我所知,域模型是只描述数据(聚合根)的类。他们是POCO,不参考外部图书馆(没有什么特别的)。ASP.NET MVC:什么机制返回ViewModel对象?
另一方面,查看模型是包含域模型对象的类以及所有接口特定对象(如SelectList
)。 ViewModel包含using System.Web.Mvc;
。
存储库从数据库中提取数据并通过域模型对象将它们提供给我们。 什么机制或设备创建视图模型对象,从数据库填充它们?它会成为拥有数据库访问权限的工厂吗?你会流血视图特定类像System.Web.Mvc到仓库?还有别的吗?
举例来说,如果你有一个下拉的城市名单,你会引用的SelectList对象在你的视图模型对象的根,旁边就是你的DomainModel参考:
public class CustomerForm {
public CustomerAddress address {get;set;}
public SelectList cities {get;set;}
}
的城市应该来从数据库并且以选择列表对象的形式。希望您不要创建一个特殊的Repository方法来提取出不同的城市,然后创建一个冗余的第二个SelectList对象,以便您拥有正确的数据类型。
当你处理额外的数据时,比如填充下拉列表的内容,你是否从存储库中提取这些数据?你是否创建了特殊的领域模型来处理像“城市列表”这样的“微观”领域模型?还是有一些其他类型的模式,如具有数据库访问权限的工厂? – 2010-04-08 14:20:12
Steve Michelotti发现了一篇很棒的文章:http://geekswithblogs.net/michelotti/archive/2009/10/25/asp.net-mvc-view-model-patterns.aspx – 2010-04-08 15:00:50