私は、オブジェクトがすでにnullの場合はusingステートメントを初期化する方法があるはずのように私は感じて、このコードは少し重複することにしようとしていセットアップ
public static CMSContent GetContent(string title, ContextDb db = null)
{
if (db == null)
{
using (db = new ContextDb())
{
return db.CMSContents.FirstOrDefault(c => c.Title == title && !c.Archived);
}
}
else
{
return db.CMSContents.FirstOrDefault(c => c.Title == title && !c.Archived);
}
}
これは、呼び出しステートメントが返されたオブジェクトに対して追加のdb要求を実行したり、いくつかの呼び出しがあり、事前に複数の接続を緩和するために接続が設定されている可能性があるからです。
return文が重複できない場合は、dbがnullの場合はthenを使用してください。
これは私にはデザインの混乱のように見えます。メソッドは単純ですが、これは良い方法ですが、メソッドの責任は何かについては少し混乱しているようです。データを取得したり、コンテキストを作成することは意味ですか?メソッドを与えすぎると、上記のような問題が発生します。 – Nkosi
これは私がプログラムする方が好きではありませんが、それは古いプロジェクトであり、私はチームに所属しており、書き直すことはできません。 – Tod
あなたは縛られています。 usingステートメントはスコープ・ベースなので、スコープがそのメソッドを越えてdbを作成し、指定されたdbが使用スコープ内にない場合は、指定されたdbが存在するかどうかを判断する方法もありません。 – Nkosi