ฉันต้องการตรวจสอบให้แน่ใจว่าฉันปฏิบัติตามมาตรฐานอุตสาหกรรมและแนวปฏิบัติที่ดีที่สุดกับการแตกที่แท้จริงครั้งแรกของฉันที่ MVC ในกรณีนี้คือ ASP.NET MVC โดยใช้ C #
ฉันจะใช้ Entity Framework 4.1 สำหรับโมเดลของฉันโดยมีวัตถุเป็นรหัสแรก (ฐานข้อมูลมีอยู่แล้ว) ดังนั้นจะมีวัตถุ DBContext สำหรับดึงข้อมูลจากฐานข้อมูล
ในการสาธิตที่ฉันได้อ่านผ่านเว็บไซต์ asp.net ผู้ควบคุมจะมีรหัสการเข้าถึงข้อมูลอยู่ สิ่งนี้ดูไม่ถูกต้องสำหรับฉันโดยเฉพาะอย่างยิ่งเมื่อทำตามแนวทางปฏิบัติของ DRY (อย่าทำซ้ำตัวเอง)
ตัวอย่างเช่นสมมติว่าฉันกำลังเขียนแอปพลิเคชันเว็บที่จะใช้ในห้องสมุดสาธารณะและฉันมีตัวควบคุมสำหรับการสร้างอัปเดตและลบหนังสือในแคตตาล็อก
การกระทำหลายอย่างอาจใช้ ISBN และต้องการส่งคืนวัตถุ "หนังสือ" (โปรดทราบว่านี่อาจไม่ใช่รหัสที่ถูกต้อง 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);
}
}
แต่ควรที่จริงผมมีวิธีการในวัตถุบริบทฐานข้อมูลของฉันจะกลับหนังสือเล่มหนึ่งหรือไม่? ดูเหมือนจะเป็นการแยกทางที่ดีกว่าสำหรับฉันและช่วยส่งเสริม DRY เพราะฉันอาจต้องรับหนังสือวัตถุโดย ISBN จากที่อื่นในเว็บแอปพลิเคชันของฉัน
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));
}
}
นี่เป็นชุดของกฎที่ถูกต้องที่จะปฏิบัติตามในการเข้ารหัสแอปพลิเคชันของฉันหรือไม่
หรือฉันคิดว่าคำถามเชิงอัตวิสัยจะเป็นดังนี้: "นี่เป็นวิธีที่ถูกต้องหรือไม่"