私が遭遇した Web アプリケーションでは、LinqToSQL を処理するときに DataContext を処理する次のコードを見つけました。
public partial class DbDataContext
{
public static DbDataContext DB
{
get
{
if (HttpContext.Current.Items["DB"] == null)
HttpContext.Current.Items["DB"] = new DbDataContext();
return (DbDataContext)HttpContext.Current.Items["DB"];
}
}
}
次に、後でこれを参照してください:
DbDataContext.DB.Accounts.Single(a => a.accountId == accountId).guid = newGuid;
DbDataContext.DB.SubmitChanges();
LinqToSQL を扱う際のベスト プラクティスを調べてきました。
DataContext が ThreadSafe ではなく、その静的コピーを保持している場合に、これが取ったアプローチについてはわかりません。
これは、Web アプリケーションを取り入れるのに適したアプローチですか?
@ Longhorn213 - あなたが言ったことと、そのために HttpContext を読んだことに基づいて、あなたは正しいと思います。しかし、私が継承したアプリケーションでは、各メソッドの開始時にデータベースを再クエリして情報を取得し、データコンテキストのそのインスタンスを変更して変更を送信しているため、これは混乱しています。
このことから、データコンテキストが静的であり、リクエスト間で持続するという誤った印象を与えているため、このメソッドはお勧めできません。将来の開発者が、データが既に存在すると考えているためにメソッドの先頭でデータを再クエリすると考えた場合、問題が発生し、その理由がわからなくなる可能性があります。
だから私の質問は、この方法は将来の開発で思いとどまるべきですか?