【发布时间】:2019-04-11 20:59:36
【问题描述】:
我正在重构一个应用程序,并尝试遵循一些“清洁代码”原则。我有一个应用程序,它从多个不同的数据源读取数据并操作/格式化该数据并将其插入另一个数据库。我有一个数据层,其中包含每个数据源的关联 DTO、存储库、接口和帮助程序,以及一个包含匹配实体、存储库和接口的业务层。
我的问题归结为导入方法。我基本上有一种方法可以系统地调用每个业务逻辑方法来读取、处理和保存数据。需要进行大量调用,即使 Import 方法本身根本不操作数据,该方法仍然非常大。有没有更好的方法来处理这些数据?
ICustomer<Customer> sourceCustomerList = new CustomerRepository();
foreach (Customer customer in sourceCustomerList.GetAllCustomers())
{
// Read Some Data
DataObject object1 = iSourceDataType1.GetDataByCustomerID(customer.ID)
// Format and save the Data
iTargetDataType1.InsertDataType1(object1)
// Read Some Data
// Format the Data
// Save the Data
//...Rinse and repeat
}
【问题讨论】:
-
我发现 TPL 数据流非常适合这类事情。它非常强大,非常适合需要处理的数据管道
-
以下是一些我认为需要考虑到您的问题以获得适当答案的因素。如果出现异常会发生什么,您需要回滚所有内容,还是重新开始处理?还是从您在此过程中中断的地方继续?将处理多少数据?如果您在读取时处理大量数据,您的 c# 应用程序的内存占用会急剧增加。
-
关于异常我需要停止,找出异常发生的原因,然后在代码或数据本身中修复它,然后从左边恢复。所以我需要跟踪迭代并能够指定从哪个迭代开始。我正在处理大量数据,但一次只能处理一小部分数据。
标签: c# design-patterns coding-style