MVC의 첫 번째 실제 균열로 업계 표준 및 모범 사례를 따르고 싶습니다. 이 경우 C #을 사용하는 ASP.NET MVC입니다.
코드 우선 개체 (데이터베이스가 이미 존재 함)와 함께 모델에 Entity Framework 4.1을 사용하므로 데이터베이스에서 데이터를 검색하기위한 DBContext 개체가 있습니다.
asp.net 웹 사이트에서 살펴본 데모에서 컨트롤러에는 데이터 액세스 코드가 있습니다. 이것은 특히 DRY (반복하지 마십시오) 관행을 따를 때 나에게 옳지 않은 것처럼 보입니다.
예를 들어, 공공 도서관에서 사용할 웹 애플리케이션을 작성 중이고 카탈로그에서 책을 작성, 업데이트 및 삭제하기위한 컨트롤러가 있다고 가정합니다.
일부 작업은 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);
}
}
대신 실제로 하나의 Book을 반환하는 db 컨텍스트 객체에 메소드가 있어야 합니까? 그것은 나에게 더 나은 분리 인 것처럼 보이고 DRY를 촉진하는 데 도움이됩니다. 웹 응용 프로그램의 다른 곳에서 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));
}
}
내 응용 프로그램을 코딩 할 때 따라야 할 유효한 규칙입니까?
또는 더 주관적인 질문은 "이것이 올바른 방법입니까?"일 것입니다.