2015年12月20日

EntityFramework(24):落穂ひろい

  
今回が、このシリーズ最後です。

説明し忘れたものをいくつかピックアップしました。

■Configuration.ValidateOnSaveEnabled

検証済みのデータを使ってデータを更新する際には、Configuration.ValidateOnSaveEnabled プロパティの 価をfalseにすることで、SaveChanges時のデータ検証を省くことができます。
これにより、パフォーマンスを向上させることができます。 デフォルト値は、trueです。

using (var db = new NorthwindContext()) {
    db.Configuration.ValidateOnSaveEnabled = false;
    ...
}


■Configuration.AutoDetectChangesEnabled

AutoDetectChangesEnabled プロパティの値を false に設定することで、パフォーマンスが 向上する場合があります。
もし、データベースへの更新処理が、INSERT か DELETE しかない場合は、このプロパティを false にすることでパフォーマンスを向上できます。
UPDATEがある場合には、プロパティの変更を検知できなくなるので、このプロパティを false にしたままだと、更新できなくなるので、注意が必要です。

using (var db = new NorthwindContext()) {
    db.Configuration.AutoDetectChangesEnabled = false;
    ...
}


■Database.CommandTimeout

データベースの操作に対するタイムアウト値の秒数を設定できます。
既定値は null 値で、null は基になるプロバイダーの既定値が使用されることを示します。

using (var db = new NorthwindContext()) {
    db.Database.CommandTimeout = 180;
    ...
}


■AsNoTracking

メソッド データベースからデータを読み出すだけならば、AsNoTrackingメソッドを使うことで、 パフォーマンスを向上できます。

using (var db = new NorthwindContext()) {
    var query = db.Products.AsNoTracking()
                  .Where(p => p.UnitPrice < 10);
    foreach (var p in query) {
        Console.WriteLine(p.ProductName);
    }
}

ほかにも、いろいろありそうだけど、僕の知識の範囲を超えるので、この辺りで当シリーズを終わりにします。


多分、これが今年最後の投稿かな。
すこし早いですが、皆さん良いお年を!





 


 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52443624