我之前从未使用过MVC设计模式,最近开始使用ASP.NET MVC工程。
我的数据层使用ActiveRecord。
我还使用视图模型(每个视图都有唯一的视图模型)和AutoMapper将我的视图模型映射到EntityFramework实体。
经过几天的研究MVC、EntityFramework并阅读不同的文章,我提出了以下设计:
在我的解决方案中,我有一个Web项目(展示层),其中包含Views和Controllers。
我有一个核心项目,在这里定义我的ViewModels和Services(业务层,所有业务逻辑都在此处)。
我有一个EntityModels项目,所有EF实体都在其中(数据层)。
这种设计使我可以将数据层与展示层分离,Web项目不知道EntityModels项目的任何信息,反之亦然,所有逻辑都在业务层中。
从我的控制器(经过验证检查)传递ViewModels到Service层,在那里执行映射和所有必要的业务逻辑。
这个设计正确吗?
我的担忧是,我读到过ViewModels应该在Presentation Layer中定义。我看到了一些例子,其中Presentation Layer引用Data layer,并在控制器中进行映射(好习惯?)。在这种情况下,控制器将领域模型传递给业务层。我在这方面没有任何经验,但我不喜欢它。
那么,有人能指出我哪里做得对,哪里做得错吗?
提前感谢。