为什么SaveChanges()方法需要这么长时间?

时间:2017-01-10 13:28:08

标签: entity-framework

我们在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类。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

在执行操作之前关闭更改跟踪。这将显着改善您的表现(秩序的大小)。在循环外执行SaveChanges()也可以节省大量时间

using (var context = new yourcontext())
{
    context.Configuration.AutoDetectChangesEnabled = false;

    //your foreach loop

    context.SaveChanges();
}

有关详情,请参阅this 页面。我希望它有所帮助,否则让我知道