首页 > 解决方案 > Entity Framework Core 和 REST 客户端 - 代码组织

问题描述

我正在构建一个包含三个项目的解决方案:

该解决方案的目的是调用 REST API,从 API 获取实体并使用 Entity Framework Core 将它们存储在数据库中。所有代码都运行良好,但我很肯定有改进架构的方法。

从 REST API 获取客户并写入数据库的示例代码流:

  1. Program.cs.ConsoleApp实例化Writer.cs和调用方法WriteCustomers()
  2. WriteCustomers获取数据库中客户的最新修改日期
  3. WriteCustomersGetCustomers( latestModifiedDate )在项目Fetcher.cs中调用。CloudTalker此方法返回和数组Customers(由 REST API 返回的类,而不是实体框架)。
  4. WriteCustomers循环遍历数组,将 REST 对象转换为 EF Core 对象并将其放入_context.Customers.
  5. Context.SaveChanges()存储Customers在数据库中。

现在我的问题/征求意见:

提前感谢您分享任何见解。

标签: c#restentity-framework-core

解决方案


在我看来,这应该属于 codereview 网站,但这是我对架构的看法(我忽略了这样一个事实,即这可能是一个简单的项目,可以使用快速而肮脏的解决方案)

作者应该在一个单独的项目中,并且应该只知道 EF 和 DB,提取器应该只知道 REST 以及如何调用远程服务。然后你可以引入一个服务层,它知道前面的两个砖块,并调用 fetcher 来获取数据,然后将数据传递给 writer。

我假设没有业务逻辑,因此不需要单独的域项目。您的服务层可以直接在您的 UI/Console 项目中。

关于命名,CustomerReadModel、CustomerWriteModel 怎么样?

看来您还需要从 DB 中读取以获取最后修改日期,因此我建议您在 db 项目中的某处有一个阅读器。


推荐阅读