2017-01-10 91 views
0

我們在我們的WPF應用程序中使用Microsoft Entity Framework Code First方法。爲什麼SaveChanges()方法在我的情況下需要這麼長時間?

下面的代碼:

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

'userActionsToTrack'有多少動作? –

+0

超過6000. – tesicg

+0

嘗試'context.Database.Log = Console.Write; '在控制檯中編寫查詢,也許你會在查詢中看到奇怪的東西。 –

回答

3

在執行操作之前,請關閉更改跟蹤。這會顯着提高您的性能(大小順序)。你的循環之外執行的SaveChanges的()也將節省您大量的時間

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

    //your foreach loop 

    context.SaveChanges(); 
} 

一些更多的信息,請參閱this頁。我希望它有幫助,否則讓我知道

+0

我已經試過,但沒有幫助。 – tesicg

相關問題