我正在使用 NHibernate 来持久化我的域对象。
为简单起见,我使用 ASP.NET MVC 项目作为我的表示层和服务层。
我想从我的 Controller 类返回 XML 格式的域对象。在阅读了 Stack Overflow 上的一些帖子后,我认为 DTO 是必经之路。但是,我也遇到过关于 ViewModel 的帖子。
我的问题:数据传输对象和 ViewModel 是一回事吗?还是 ViewModel 是 DTO 的一种子模式?
最佳答案
DTO 的规范定义是没有任何行为的对象的数据形状。
ViewModels 是 View 的模型。 ViewModels 通常是来自一个或多个对象(或 DTO)的完整或部分数据以及特定于 View 行为的任何其他成员( View 可以执行的方法、指示如何切换 View 元素的属性等)。您可以将 View 模型视为 View 加行为的所有数据。 ViewModel 可能会也可能不会一对一地映射到业务对象或 DTO。
顺便说一下,如果某个 View 模型需要来自持久对象的数据子集,NHibernate projections 会派上用场。
关于asp.net-mvc - DTO = View 模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1982042/