我一直在开发一个多层 MVC 应用程序,现在回顾一下我到目前为止所做的一切。尤其是现在我已经回去并再次阅读了很多关于多层/层的资料(那里有大量信息,但没有真正的一致性或标准),我现在质疑我的数据层。
我强烈怀疑我没有正确实现它(符合良好的设计)并且可能偏离了正切线。这是我所做的:
网页界面
BLL
包括包含以下内容的服务类:
数据
...
退后一步,重新审视,这是我所看到的,也是我质疑的:
在 BLL 中,EF 代码在这里看起来不正确。它应该在数据层中。有人可以确认一下吗?
我的数据层(即数据项目)包含上下文类和领域模型。我读过人们将他们的数据层分成 a) DAL 和 b) 模型。 因此,我猜测 DAL 层将包含上下文类和数据 (EF) 代码,而模型层将只包含域模型。这最终会使您总共有 4 层。可能太过分了还是设计不错?
有没有偏好在何处使用 AutoMapper 进行 EF 到 ViewModel 的映射?我目前正在 Web 层中映射,但怀疑它在 BLL 中可能更整洁。有些映射只能在Web层做,比如下拉列表的SelectListItem。
最佳答案
经过大量阅读,这篇文章与那里的很多信息是一致的,并且回答了我的大部分问题:
http://www.kenneth-truyers.net/2013/05/12/the-n-layer-myth-and-basic-dependency-injection/
EF 代码应该在 DAL 中,而不是 BLL。
将模型(从 DAL 移出)并移入它自己的程序集中。现在我的数据层有两个程序集:DAL 和模型。这可能归结为个人喜好。此外,我更希望 Web 层仅引用模型程序集,而不是 DAL。
我怀疑我可能在 Web 和 BLL 层都有映射。尚待确认,当我开始做这件事时。
如果有人有更好更详细的答案,我很乐意接受,否则这篇文章似乎回答了很多与层相关的问题。
https://stackoverflow.com/questions/22216885/