我一直在开发一个多层 MVC 应用程序,现在回顾一下我到目前为止所做的事情。尤其是现在我已经回去并再次阅读了有关多层/层的大量信息(那里有大量信息,但没有真正的一致性或标准),我现在正在质疑我的数据层。
我强烈怀疑我没有正确地实现它(符合良好的设计)并且可能已经偏离正题。这是我所做的:
网页界面
- 包括控制器、视图模型、视图
BLL
包括包含以下内容的服务类:
- 内存中的操作代码,例如集合...
- 数据访问代码,例如实体的 EF linq。
数据
- /Models 包含域类的文件夹
- /DAL 文件夹,其中包含 DbContext 类
...
退后一步,重新审查,这是我所看到的,也是我所质疑的:
在 BLL 中,EF 代码在这里看起来不正确。它应该在数据层。有人可以确认吗?
我的数据层(即数据项目)包含上下文类和域模型。我读过人们将他们的数据层分为 a) DAL 和 b) 模型。因此,我猜 DAL 层将包含上下文类和数据 (EF) 代码,而模型层将仅包含域模型。这最终会使您总共有 4 层。可能是太过分了还是设计不错?
任何偏好在哪里使用 AutoMapper 进行 EF 到 ViewModel 映射?我目前正在 Web 层中进行映射,但怀疑它在 BLL 中可能更整洁。有些映射只能在 Web 层完成,例如下拉列表的 SelectListItem。