0

我有:

  • DAL 层-> 实体和 DbContext(实体框架)
  • BLL 层-> 服务
  • UI 层-> Razor 页面

我在 BLL 层的服务将实体转换为数据传输对象,并将数据传输对象返回给 UI 层。UI 层还将数据传输对象传递给 BLL 服务。

我应该将数据传输对象放在 BLL 层还是创建一个单独的层?

4

1 回答 1

0

每一层都应该有自己的模型/视图模型。

持久层具有 EF 实体。那些不应该出现在上层。否则,您将永远与 EF 绑定。

BL 包含您的领域模型。持久层将负责映射实体->域模型(反之亦然)。

UI 有自己的 ViewModel 并负责映射。

现在,话虽如此,您可以设法将域模型类用作 EF 实体,从而实现所谓的“持久性无知”。这通常需要一些“魔法”,通常通过避免属性上的任何类型的库特定数据注释属性来完成(如 [Table]、[ForeignKey] 等)。db 映射通过IEntityTypeConfiguration.

于 2020-11-27T02:09:31.863 回答