Rob*_*ert 0 c# sql-server csv asp.net-mvc entity-framework
我们有一个ASP.NET MVC Web应用程序,可与带有EF6的MS SQL Server Epress数据库进行通信。在数据库中,我们有一个大于10 mio的大型存档表。行。存档表相对简单,只有少量的ID,一个值和一个时间戳。
我已经有了一个“工作”控制器方法,该方法从DbContext中获取数据作为我的archiveEntry实体的IQueryable,然后将其放入.ToList()的列表中,从中创建一个CSV文件,将其压缩后返回。客户端作为文件下载。但是,问题在于整个表太慢了,因为有250000行,这大约需要15分钟。
有没有一种方法可以在数据库中直接查询和创建CSV并将其直接传递给客户端?
您可以用“ Dapper”之类的东西替换EF来读取实体。
更多信息在这里:https : //dapper-tutorial.net/dapper
另一种方法,如果要保留EF,则从上下文中禁用更改跟踪(因为您只是在读取实体)
您有两种选择:
myContext.AutoDetectChangesEnabled = false;var logs= myContext.Logs.AsNoTracking();然后使用高性能CSV编写器:
这是一个很好的:https : //joshclose.github.io/CsvHelper/
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |