Как показать дочерние данные здесь, у меня есть две модели: Книга (родитель) и Автор (ребенок). Я хочу показать имя автора при просмотре, но в модели Book у меня есть объект Author с нулевой ссылкой, но AuthorId имеет значение 1.
Мне удалось получить дочерние значения в контроллере, когда я получил данные Book с объектом DbContext, который я ищудля данных автора, я не знаю, является ли это правильным способом, потому что я новичок в ASP.NET MVC или существует лучшее решение для соединения данных между родительскими и дочерними данными?
Вот мои классы контроллера и модели.
public ActionResult Book(int id)
{
var book = dbContext.Books.SingleOrDefault(b => b.ID == id);
if(book.AuthorId != null)
{
book.Author = dbContext.Authors.SingleOrDefault(a => a.ID == book.AuthorId);
}
return View(book);
}
Класс книжной модели.
public class Book
{
[Key]
public int ID { get; set; }
public string Title { get; set; }
public decimal Score { get; set; }
public Format Format { get; set; }
public Language Language { get; set; }
[ForeignKey("Author")]
public int? AuthorId { get; set; }
public Author Author { get; set; }
public string Description { get; set; }
public decimal Price { get; set; }
public decimal Discount { get; set; }
}
И эта дочерняя модель Автор
public class Author
{
[Key]
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public ICollection<Book> Books { get; set; }
}
РЕДАКТИРОВАТЬ: Решение состоит в том, чтобы использовать метод расширения Включить, который можно найти вэто пространство имен System.Data.Entity.
public ActionResult Book(int id)
{
var book = dbContext.Books
.Include(a => a.Author)
.Include(p => p.ProductDetails)
.SingleOrDefault(b => b.ID == id);
return View(book);
}