在实体框架上下文中删除所有记录并重新创建的正确方法是什么?

时间:2019-07-29 14:44:52

标签: c# entity-framework

我正在寻找一个数据库,其中包含文件系统中图像路径的记录。刷新记录的最佳方法似乎是删除所有记录,然后重新创建所有记录。因为每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);
}

1 个答案:

答案 0 :(得分:1)

有一个名为EntityFrameworkPlus的库,我喜欢将其用作批量操作。您可以像这样使用DeleteAsync批处理操作:

await databaseContext.ImageRecords.DeleteAsync();

它将删除您的所有记录,而不必遍历每条记录。快速。容易。

然后,要批量添加,可以使用AddRangeAsync方法,而不必遍历每条记录,就像这样:

await databaseContext.ImageRecords.AddRangeAsync(FileSystemCollection);
await databaseContext.SaveChangesAsync();