Показать дочерние данные в View MVC - PullRequest
0 голосов
/ 26 октября 2019

Как показать дочерние данные здесь, у меня есть две модели: Книга (родитель) и Автор (ребенок). Я хочу показать имя автора при просмотре, но в модели 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);
    }

1 Ответ

0 голосов
/ 28 октября 2019

Код, похоже, не содержит ошибок. Убедитесь, что имена столбцов таблицы базы данных точно совпадают с именами свойств. И попробуйте разные способы добавления чужого ключа в EF.

Добавление внешнего ключа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...