【发布时间】:2015-12-16 06:54:45
【问题描述】:
我编写了一个类来读取一个包含 4k 条记录、72 列宽的 CSV 文件。列表中的“读取()”实际上需要一秒钟,也许......
成功加载列表后,我就有了将每个对象保存到数据库的一般流程;
foreach (var object in Objects)
{
try{
// check conditions
// perform conversions on the data and assign to domain object.property
//....
//db.object.Add(object);
//db.savechanges();
}catch{
//update log if the try fails
}
}
一旦循环执行成功,我调用 db.dispose();
我没有在 MVC 控制器结构之外构建太多类,因为我是新手,所以请放轻松;)。我假设我正在使用这种导致指数处理时间问题的方法占用宝贵的资源。
关于如何提高性能的任何建议?提前致谢!
【问题讨论】:
-
由于这是实体框架,我猜您会遇到大量对象的更改跟踪开销。有多种方法可以解决这个问题。谷歌“实体框架更改跟踪”,也许还有一些背景的“AutoDetectChangesEnabled”。
-
谢谢,我必须调查一下。我的一般逻辑是从列表中取出一个对象并将其分配给域对象,保存,冲洗重复。我不确定为什么它会跟踪更改,因为这些是新对象。对于那些我正在检查它们是否已经存在的对象,我运行 db.model.find(),然后将列表对象中的每个值分配给“找到”的域对象。
-
这是您引用的 Atoms 吗? weblog.west-wind.com/posts/2013/Dec/22/…
标签: c# asp.net-mvc entity-framework query-performance