繁体   English   中英

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

[英]What is the proper way to delete all records in an Entity Framework context and recreate it?

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

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

await databaseContext.ImageRecords.DeleteAsync();

它将删除您的所有记录,而无需遍历每条记录。 快速地。 简单。

然后,对于批量添加,您可以使用 AddRangeAsync 方法,而无需遍历每条记录,如下所示:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM