【发布时间】:2014-11-05 19:03:00
【问题描述】:
我想使用 EF 6 代码优先概念在 ASP.NET MVC 5 中创建一个好的应用程序。我希望它设计得很好,即一般来说:表示层、逻辑层和数据层是分开的。我希望它是可测试的:)
这是我的想法和一些与创建应用程序相关的问题
表示层:这是我的整个 MVC - 视图模型(不是模型)、视图、控制器 我认为应该在其他地方进行验证(在我看来 - 它是业务逻辑的一部分),但是在 ViewModelds 中使用 DataAnnotations 命名空间中的属性并在控制器中检查验证非常方便。
逻辑层:服务 - 具有用于规则业务逻辑的接口的类。 我把函数放在那里:AddNewPerson(PersonViewModel Person)、SendMessageToPerson(...)。 他们将使用 DB 上下文来进行操作(有可能并非所有人都依赖于上下文)。服务和数据库之间有直接的联系——我的意思是服务类有参考做上下文。 我应该在哪里做 ViewModel 和 Model 之间的映射?我听说服务对它来说是一个糟糕的地方——所以也许在控制器中。我听说服务应该专门做与 db 相关的工作。 这样对吗?我的服务层图好不好?
数据层:我读过很多关于 Repository 和 UoW 模式的文章。有一些文章表明 EF6 实现了这两件事。如果不需要这种行为,我不想创建额外的代码。问题是:我认为我不需要它们是否正确?
这是我的流程:
ViewControllers(使用 ViewModels)Services(使用 Models)DB。
**我将在我的项目中使用 DI。
你觉得我的项目结构怎么样?
【问题讨论】:
标签: asp.net-mvc entity-framework asp.net-mvc-5 entity-framework-6 service-layer