我有一个文件夹,里面装满了大约200个csv文件,每个文件包含大约6000行包含共同基金数据的数据。我必须通过实体框架将这些逗号分隔的数据复制到数据库中。
两个主要对象是Mutual_Fund_Scheme_Details和Mutual_Fund_NAV_Details。
Mutual_Fund_Scheme_Details --它包含Scheme_Name、Scheme_Code、Id、Last_Updated_On.等列
Mutual_Fund_NAV_Details -这包含Scheme_Id (外键),NAV,NAV_Date.CSV中的每一行都包含上述所有列,所以在插入之前,我必须-
line.
日期。
所有存在的检查都是使用任何linq扩展方法完成的,所有新条目都插入到DbContext中,但是只有在每个文件的处理结束时才调用SaveChanges方法。我曾经在每次插入后调用它,但这只需要比现在更长的时间。
现在,这至少涉及两个存在检查,最多两个插入和一个更新,插入每个文件花费的时间太长,接近5-7分钟。我正在寻找改善这方面的建议。任何帮助都是有用的。
具体来说,我希望:
减少处理每个file
发布于 2021-05-02 12:37:08
很难用EF来优化它。以下是一个建议:
.Where( x => listOfIdsFromFile.Contains(x.Id))进行存在检查。这应该适用于6000个it,它将允许您将插入与更新分开。https://stackoverflow.com/questions/67356147
复制相似问题