次のコードがあるとします。
public static void SomeLoop()
{
using(var db = new ArcadeContext())
{
var changeRecs = db.ArcadeGameRanks.Where(c => c.Date == today);
foreach (var rankRecord in changeRecs)
{
var rank = SomeMethod(rankRecord.GameID);
UpdateGamesCatRank(rankRecord.GameID, rank);
}
}
}
public static void UpdateGamesCatRank(int gameID, int catRank)
{
using(var db = new ArcadeContext())
{
db.ExecuteCommand("UPDATE ArcadeGame SET CategoryRank = " + catRank + " WHERE ID = " + gameID);
}
}
SQL Server プロファイラーを実行すると、パフォーマンスに影響を与えると思われるメッセージが繰り返しAudit Login
表示Audit Logout
されます。
私は C# を独学で学んでいるので、普段とは違うことをしている可能性が高いことはわかっています。
私の質問は、上記のデザインパターンは良いと考えられていますか? または、関数が呼び出されるたびに再確立する必要がないように、データコンテキストを関数へのパラメーターとして再利用/渡す必要がありますか? (新しいデータコンテキストの繰り返し作成がログインとログアウトの原因であるという私の仮定の場合)。