我正在寻找一个数据库,其中包含文件系统中图像路径的记录。刷新记录的最佳方法似乎是删除所有记录,然后重新创建所有记录。因为每5000条记录大约需要1分钟的时间,此时Web服务器可能无法使用图像,所以我想有一种方法可以在5000条记录不到1分钟的时间内进行操作。那会是什么呢?
以下是慢速代码的示例:
foreach(ImageRecord imageRecord in EntityFrameworkCollection)
{
databaseContext.ImageRecords.Remove(imageRecord);
}
//...SaveChanges() and/or recreate context
foreach(ImageRecord imageRecord in FileSystemCollection)
{
databaseContext.ImageRecords.Add(imageRecord);
}
答案 0 :(得分:1)
有一个名为EntityFrameworkPlus的库,我喜欢将其用作批量操作。您可以像这样使用DeleteAsync批处理操作:
await databaseContext.ImageRecords.DeleteAsync();
它将删除您的所有记录,而不必遍历每条记录。快速。容易。
然后,要批量添加,可以使用AddRangeAsync方法,而不必遍历每条记录,就像这样:
await databaseContext.ImageRecords.AddRangeAsync(FileSystemCollection);
await databaseContext.SaveChangesAsync();