我使用Entity Framework来调用存储过程。我有一个场景,这个程序,所有说和完成,被称为3000次,然后对于这3000个存储过程调用中的每一个,另一个存储过程将被调用1到100次。它总共花了大约20分钟。我希望把时间缩短一半。有什么我可以做的来优化这个吗?
基本上这就是发生的事情:
foreach (var parentObject in parents) //parents.count = 3000
{
int id = _efContext.prInsertParent(parentObject.Name, parentObject.values, etc..);
// Have to get SCOPE_IDENTITY() id to be able to add children
foreach (var child in parentObject.Children) //children count up to 100 items
{
_efContext.prInsertChild(id, etc..othervalues);
}
}
答案 0 :(得分:0)
正如我在评论中所说,我重新考虑你的架构。
答案 1 :(得分:0)
当您插入数据时......数据必须以某种方式进入...... 我会尝试将这些设置为false ..插入之前..然后看看你得到了什么。
Configuration.AutoDetectChangesEnabled = false;
Configuration.ValidateOnSaveEnabled = false;
答案 2 :(得分:0)
我使用用户定义的表结束,允许我传入多行来进行批量插入。把我的时间缩短一半。我很满意。 :)
基本上遵循这个:
http://www.c-sharpcorner.com/blogs/bulk-insert-into-table-using-userdefined-table-type1