我们在WPF应用程序中使用Microsoft Entity Framework Code First方法。
以下是代码:
int mainResult = base.SaveChanges();
foreach (var action in userActionsToTrack)
{
var guid = action.EntityGuid;
ITrackableEntity entity;
if (addedEntities.TryGetValue(guid, out entity))
action.EntityId = entity.Id;
Entry(action).State = EntityState.Added;
}
base.SaveChanges();
第一次通话大约需要1秒钟,第二次通话需要几分钟。
基础是 - DbContext类。
为什么会这样?
答案 0 :(得分:3)
在执行操作之前关闭更改跟踪。这将显着改善您的表现(秩序的大小)。在循环外执行SaveChanges()也可以节省大量时间
using (var context = new yourcontext())
{
context.Configuration.AutoDetectChangesEnabled = false;
//your foreach loop
context.SaveChanges();
}
有关详情,请参阅this 页面。我希望它有所帮助,否则让我知道