私は、MVCでの最初の本当のクラックで、業界標準とベストプラクティスに従っていることを確認したいと思います。この場合、C#を使用したASP.NET MVCです。
モデルにEntity Framework 4.1を使用し、コードファーストオブジェクト(データベースが既に存在する)を使用するため、データベースからデータを取得するためのDBContextオブジェクトが存在します。
asp.net Webサイトで行ったデモでは、コントローラーにデータアクセスコードが含まれています。これは、特にDRY(自分自身を繰り返さないでください)プラクティスに従う場合、私には正しくないようです。
たとえば、公共図書館で使用するWebアプリケーションを作成しており、カタログ内の書籍を作成、更新、削除するためのコントローラーがあるとします。
アクションのいくつかはISBNを取得し、「Book」オブジェクトを返す必要がある場合があります(これはおそらく100%有効なコードではないことに注意してください)。
public class BookController : Controller
{
LibraryDBContext _db = new LibraryDBContext();
public ActionResult Details(String ISBNtoGet)
{
Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet);
return View(currentBook);
}
public ActionResult Edit(String ISBNtoGet)
{
Book currentBook = _db.Books.Single(b => b.ISBN == ISBNtoGet);
return View(currentBook);
}
}
代わりに、すべき 1つのBookを返すメソッドをdbコンテキストオブジェクトに実際がありますか?それは私にとってより良い分離のようであり、DRYを促進するのに役立ちます。これは、WebアプリケーションのどこかでISBNによってBookオブジェクトを取得する必要があるからです。
public partial class LibraryDBContext: DBContext
{
public Book GetBookByISBN(String ISBNtoGet)
{
return Books.Single(b => b.ISBN == ISBNtoGet);
}
}
public class BookController : Controller
{
LibraryDBContext _db = new LibraryDBContext();
public ActionResult Details(String ISBNtoGet)
{
return View(_db.GetBookByISBN(ISBNtoGet));
}
public ActionResult Edit(ByVal ISBNtoGet as String)
{
return View(_db.GetBookByISBN(ISBNtoGet));
}
}
これは、アプリケーションのコーディングで従うべき有効なルールのセットですか?
または、より主観的な質問は「これが正しい方法ですか?」