この問題が数回発生したことを感謝しますが、明確な答えを見つけることができません(おそらく1つはありません!)。
とにかく、タイトルはそれをすべて本当に伝えています。新しいコンテキストを作成し、新しいエンティティを追加します。SaveChanges()には20秒かかります。同じコンテキストで2番目のエンティティであるSaveChanges()インスタントを追加します。
これについて何か考えはありますか?:-)
============更新=============
問題を示すために、既存のモデルに対して実行する非常に単純なアプリを作成しました...
public void Go()
{
ModelContainer context = new ModelContainer(DbHelper.GenerateConnectionString());
for (int i = 1; i <= 5; i++)
{
DateTime start = DateTime.Now;
Order order = context.Orders.Single(c => c.Reference == "AA05056");
DateTime end = DateTime.Now;
double millisecs = (end - start).TotalMilliseconds;
Console.WriteLine("Query " + i + " = " + millisecs + "ms (" + millisecs / 1000 + "s)");
start = DateTime.Now;
order.Note = start.ToLongTimeString();
context.SaveChanges();
end = DateTime.Now;
millisecs = (end - start).TotalMilliseconds;
Console.WriteLine("SaveChanges " + i + " = " + millisecs + "ms (" + millisecs / 1000 + "s)");
Thread.Sleep(1000);
}
Console.ReadKey();
}
無効なテストでない限り、私のコードにコメントしないでください;)
結果は次のとおりです。
クエリ1=3999.2288ms(3.9992288s)
SaveChanges 1 = 3391.194ms(3.391194s)
クエリ2=18.001ms(0.018001s)
SaveChanges 2 = 4.0002ms(0.0040002s)
クエリ3=14.0008ms(0.0140008s)
SaveChanges 3 = 3.0002ms(0.0030002s)
クエリ4=13.0008ms(0.0130008s)
SaveChanges 4 = 3.0002ms(0.0030002s)
クエリ5=10.0005ms(0.0100005s)
SaveChanges 5 = 3.0002ms(0.0030002s)
最初のクエリには時間がかかりますが、ビューの生成だと思いますか?またはdb接続?
最初の保存には4秒近くかかりますが、私のアプリでのより複雑な保存には20秒以上かかりますが、これは受け入れられません。
今これでどこに行くべきかわからない:-(
アップデート...
SQL Profilerは、最初のクエリと更新が高速であり、最初のクエリと更新に違いがないことを示しています。ですから、遅延は疑わしいエンティティフレームワークであることを私は知っています。