Допустим, у меня есть Books
таблица и Chapters
. Эти 2 таблицы связаны между собой one-to-many
. И я хочу создать сайт с ASP.NET MVC5 для отображения названия книги и ее глав. Итак, я могу выполнить как минимум 2 сценария запроса для отображения необходимых данных:
1. Запросить все данные в контроллере
BookViewModel.cs
class BookViewModel{
List<Books> books{set;get;}
List<ChapterList> chapterLists{set;get;}
}
ChapterList.cs
class ChapterList{
List<Chapters> chapters{set;get;}
}
Book.cs (Контроллер)
public ActionResult Index()
{
List<Books> books = db.Books.ToList()
List<ChapterList> chapterList = new List<ChapterList>();
foreach(Books m in books)
{
chapterLists.Add(db.Chapters.Where(m => m.book_id = m.id).ToList());
}
BookViewModel bvm = new BookViewModel();
bvm.books = books;
bvm.chapterLists = chapterLists
return view();
}
Index.cshtml (представление) - я думаю, что пропущу этот код, потому что я предполагаю, что вы знаете, как его отобразить
2. Запрос в Razor
Book.cs (Контроллер)
public ActionResult Index()
{
List<Books> books = db.Books.ToList()
return view(books);
}
Index.cshtml (Просмотр)
@foreach(Books book in model)
{
@book.Name
foreach(Chapters chapter in book.Chapters.ToList())
{
@chapter.Name
}
}
Второй сценарий запроса для меня самый простой, но я не уверен, какой из них быстрее. Итак, мой вопрос: какая из них является наилучшей (или самой быстрой при отображении представления), если существует миллион Books
данных и базы данных находятся на другом сервере? И есть ли другой способ быстрее отобразить вид?