【发布时间】:2017-09-13 13:28:10
【问题描述】:
我想要做什么:
我有一张用户表和一张网桥表。网桥和用户之间的关系是多对多的。我得到了一个用户和一个 IEnumerable 网桥,我正在尝试将用户添加到 IEnumerable 中的每个网桥。
我的尝试:
我已经搜索过,但很多帖子都是关于 Context.SaveChanges() 很慢。对我来说,Context.SaveChanges() 很好。但是我在循环中有Add() 和Attach() 调用,并且在调试模式下,循环需要 37 秒才能运行 n 。
我试过关闭AutoDetectChangesEnabled,但似乎我依赖于它。
Context.Configuration.ValidateOnSaveEnabled = false;
Context.USER.Add(user);
Context.USER.Attach(user);
foreach(BRIDGE bridge in bridges)
{
Context.BRIDGE.Add(bridge);
Context.BRIDGE.Attach(bridge);
bridge.USER.Add(user);
}
int result = Context.SaveChanges();
Context.Configuration.ValidateOnSaveEnabled = true;
return result;
我的选择(据我所知):
重定向用户并异步执行操作。 (避免,因为我想在完成后给用户一些反馈)。
只需让用户等待。
将相关信息发送到存储过程并让存储过程
SELECT桥接并执行INSERT。 (避免,因为我的工作场所可能充其量会对此皱眉头。)
问题:
有什么方法可以让循环运行得更快,还是我被卡住了?
(我只使用实体框架大约 6 个月,所以解释越多越好。)
【问题讨论】:
标签: c# asp.net .net asp.net-mvc entity-framework