我们有一个部署在Azure上的ASP.NET MVC应用程序。该应用程序允许用户上传大型Excel文件(大约15 MB = 25K行)。
在代码中,我们并行处理每个记录,对其执行验证,如果一切正常,我们使用Entity Framework在单个事务中将记录插入/更新到SQL Server数据库中。一段时间后,我们得到SQL Server数据库连接超时错误。
在没有在Azure上出现超时错误的情况下,以有效的方式处理这个大型Excel文件的最佳方法是什么?
谢谢
不要将文件保存在数据库中。更好的方法是将其保存在文件系统或azure blob存储上,只需保存路径即可。是数据库保存文件或二进制数据的开销。
使用实体框架SaveChanges增加超时。如果您开始出现内存不足错误,那么我的建议是使用ZZZProjects的BulkSaveChanges。使用BulkSaveChanges,您可以更快地上传文件并避免超时。
这是我已经实施的解决方案。
if (counter != 0)
yield return partition;
}
}
}
使用这种方法,我能够快速上传大约32K记录的5 MB(excel文件)。
感谢大家的帮助!