7

I am using entity framework in my latest ASP.NET MVC 3 project. As it is DB first, the entity framework generates Database models. In my service (business) layer I Scaffold (MvcScaffolding) to generate service methods, views and controllers. Scaffolding also generates the domain models. When binding these models to the Views, I use view models.

In short, I ended up in using three types of models. Is this Ok? The view models are kept in the Presentation layer, domain models are kept in the business layer and data models are kept in the repository layer.

Please let me know your thoughts.

4

2 回答 2

4

这听起来不错,确实有几个好处。

  1. 您可以从头开始重新创建数据库模型,而不会影响域模型,当然它们的映射方式除外。有些人会争辩说这两个可以合并为一个,但这在很大程度上取决于您的设置。

  2. 单独的视图模型将允许您更自由地更改和创建新的视图模型以适应您的视图。它还有助于防止延迟加载代理等

许多人也会有一个 Dto 对象集。这些作为一组缓存对象很有用,如果您有多个 UI,也可以说是 Windows 服务。

Automapper非常流行,可以缓解有这么多模型要映射的痛苦。

于 2012-11-20T09:06:38.260 回答
3

当您在各个级别的模型之间存在差异时,这很好。如果你对这个模型所做的只是将数据从一个层模型放到另一个层模型而不进行任何转换和处理,你可以删除冗余模型。在常见情况下,域模型变得多余。

您应该创建分离的视图模型和数据库模型,因为有必要在不更改视图的情况下从数据库重新创建数据库模型。

于 2012-11-20T09:07:58.593 回答