我只想补充说,对于小型项目,只需拥有自己的ViewModel并使用它即可。稍后,您可以在实体需要时分开实体。
对于许多开发者增加新图层而没有权衡利弊,后来他们开始注意到滞后疑惑发生。 MVC本身已经是一个分离关注点。
拥有独立的DomainEntity解决了UI不再将1对1映射到实体的问题,请考虑以下事项。
Version 1
Domain | Presentation
--------------------------------
User.FirstName | User.Name
User.LastName |
User.PositionTitle | User.PositionTitle
该示例演示了域和演示文稿不再以1对1映射。在未来,你可能有域的修改,如下列:
Version 2
Domain | Presentation
--------------------------------
User.FirstName | User.Name
User.LastName |
Position.Title | User.PositionTitle
基于上面的例子(第2版),请注意,呈现没有被修改。拥有分离的域模型可以提高界面的稳定性。它甚至可以降低重构场景的更改成本。
优势的视图模型
视图模型的美妙之处在于它能够消除您的域名从表示,在大型项目中,不同的开发商处理系统的不同部分使用时,这样的好处是更明显(独立GUI团队)
一个小小的变化需要更改许多类。
这是解耦您的实体的缺点之一,它会创建代码的重复。额外的编码具有巨大的成本,其益处显而易见是值得的。
愚蠢的问题,但你用什么来访问你的数据库?实体框架?如果是这样,Entity Framework支持可以直接映射到ViewModel的投影。 –
当您的要求或域名实体发生变化,并且它们与您需要显示的内容不一样时,那么是什么? –
@BigDaddy,这是一个很好的观点,但如果这是他需要展示的东西,那么它可以节省麻烦,福勒称之为鸟枪变异的气味。一个小的改变需要改变许多类。 – dove