EF Core 中使用单独的域模型和实体吗?

Rya*_*gha 5 c# mapping entity-framework

我不确定是否应该让 EF 使用我的域模型。

现在我有三种类型的模型:

  • 核心.模型(系统范围)
  • API.Models(仅在控制器中使用)
  • Infrastructure.Entities(仅用于持久化)

我的服务类中的每个方法如下所示:

  1. 从数据库获取实体
  2. 根据请求更改实体的属性
  3. 保存更改

当使用域实体时,这非常有效,因为 EF 开始跟踪更改并且只能保留已更改的内容。

如果我在从数据库检索时映射到域模型,以便我的服务仅在域模型上工作,那么我的更改当然不会被跟踪:

  1. 从数据库获取未跟踪的实体,并映射到域模型
  2. 根据请求更改域模型的属性
  3. 映射回实体
  4. 进行复杂的图形比较(由于未跟踪更改,因此手动设置已更改的状态)
  5. 保存更改

这些实体不包含数据注释或不包含任何内容,我使用的是 Fluent API。我认为分离领域模型和实体没有意义。我正在查看 Jimmy Bogard、Steve 'Ardalis' Smith、Jason Taylor 的示例,他们都使用域模型作为 EF 实体。他们这样做是为了保持代码简单以用于演示目的还是对分离模型和实体没有好处?