我使用实体框架,我最新的ASP.NET MVC 3项目。 由于这是DB第一,实体框架生成的数据库模型 。 在我的服务(业务)层脚手架我(MvcScaffolding)来生成服务方法,视图和控制器。 脚手架还生成域模型 。 当这些模型绑定到的意见,我使用视图模型 。
总之,我在使用三种类型的模型结束了。 这个可以吗? 该视图模型被保存在表示层,领域模型保存在业务层和数据模型都保存在存储库层。
请让我知道你的想法。
我使用实体框架,我最新的ASP.NET MVC 3项目。 由于这是DB第一,实体框架生成的数据库模型 。 在我的服务(业务)层脚手架我(MvcScaffolding)来生成服务方法,视图和控制器。 脚手架还生成域模型 。 当这些模型绑定到的意见,我使用视图模型 。
总之,我在使用三种类型的模型结束了。 这个可以吗? 该视图模型被保存在表示层,领域模型保存在业务层和数据模型都保存在存储库层。
请让我知道你的想法。
听起来不错,确实有几个好处。
您可以从头开始重新创建数据库模型,而不会影响域模型,除非他们是如何映射当然。 有人会说,这两项可以合并成一个,但它深深地依赖于你的设置。
独立的视图模型可以让你更自由地改变和创造新的ViewModels,以满足您的观点。 它还有助于防止后期加载代理等 。
许多人也有一个DTO对象的集合。 这些派上用处作为一组用于缓存的对象,也如果你有一个以上的用户界面,说一个窗口服务也是如此。
Automapper是非常受欢迎的缓解有这么多车型映射的痛苦。
当你在每一个级别的车型之间的差异是好的。 如果你用这个模型做的就是把数据从一个层模型另一层模型,而无需任何转换和处理,可以去除多余的车型。 在通常情况下的域模型变得多余。
你应该由于必要性创造分离视图模型和数据库模型有可能重新从数据库的数据库模型,而不意见改变。