asp.net-mvc - MVC 层和 DAL 和数据层

我一直在开发一个多层 MVC 应用程序,现在回顾一下我到目前为止所做的一切。尤其是现在我已经回去并再次阅读了很多关于多层/层的资料(那里有大量信息,但没有真正的一致性或标准),我现在质疑我的数据层。

我强烈怀疑我没有正确实现它(符合良好的设计)并且可能偏离了正切线。这是我所做的:

网页界面

  • 包括 Controller 、 View 模型、 View

BLL

  • 包括包含以下内容的服务类:

    1. 内存操作代码,例如收藏...
    2. 数据访问代码,例如实体的 EF 链接。

数据

  • /包含领域类的模型文件夹
  • /包含 DbContext 类的 DAL 文件夹

...

退后一步,重新审视,这是我所看到的,也是我质疑的:

  1. 在 BLL 中,EF 代码在这里看起来不正确。它应该在数据层中。有人可以确认一下吗?

  2. 我的数据层(即数据项目)包含上下文类和领域模型。我读过人们将他们的数据层分成 a) DAL 和 b) 模型。 因此,我猜测 DAL 层将包含上下文类和数据 (EF) 代码,而模型层将只包含域模型。这最终会使您总共有 4 层。可能太过分了还是设计不错?

  3. 有没有偏好在何处使用 AutoMapper 进行 EF 到 ViewModel 的映射?我目前正在 Web 层中映射,但怀疑它在 BLL 中可能更整洁。有些映射只能在Web层做,比如下拉列表的SelectListItem。

最佳答案

经过大量阅读,这篇文章与那里的很多信息是一致的,并且回答了我的大部分问题:

http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/

  1. EF 代码应该在 DAL 中,而不是 BLL。

  2. 将模型(从 DAL 移出)并移入它自己的程序集中。现在我的数据层有两个程序集:DAL 和模型。这可能归结为个人喜好。此外,我更希望 Web 层仅引用模型程序集,而不是 DAL。

  3. 我怀疑我可能在 Web 和 BLL 层都有映射。尚待确认,当我开始做这件事时。

如果有人有更好更详细的答案,我很乐意接受,否则这篇文章似乎回答了很多与层相关的问题。

https://stackoverflow.com/questions/22216885/

相关文章:

localization - 在运行时更改 WIX 安装程序语言

Django - 如何设置表单字段占位符的样式?

database-design - Toad ERD 到 Visio ER 图的转换

objective-c - NSData 指针与引用

makefile - 了解 kbuild 构建过程的工作原理

command-line - 无法在 cygwin 上运行 isql

jdbc - 在 Netty 消息处理中使用 JDBC 事务

diff - 如何通过输出获取差异文件名

qt - 如何在 QMainWindow 中绘画?

math - 最大化受二次约束的线性目标