实体框架核心-与多对多关系的问题 [英] Entity Framework Core - problem with get relationship many to many

查看:75
本文介绍了实体框架核心-与多对多关系的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的Get方法有问题.在我的 BookRepository 中,我有以下方法:

I have an issue with my Get method. In my BookRepository I have this method:

public Book GetBook(int id)
{
    return _context.Books
                   .Include(a => a.BookAuthors)
                   .Single(b => b.Id == id);
}

这是我的3个班级:

public class Book
{
    public int Id { get; set; }
    public string Title { get; set; }
    public virtual ICollection<BookAuthor> BookAuthors { get; set; }
    public string PublishingHouse { get; set; }
    public int NumberOfPages { get; set; }
    public int ISBN { get; set; }
}

public class Author
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string SecondName { get; set; }
    public string Nationality { get; set; }
    public virtual ICollection<BookAuthor> BookAuthors { get; set; }
}

public class BookAuthor
{
    public int BookId { get; set; }
    public Book Book { get; set; }
    public int AuthorId { get; set; }
    public Author Author { get; set; }
}

我想在屏幕上显示详细信息书,但是当我执行方法 GetBook 时,我得到了一个奇怪的-model,其中是 Book ,其中包括BookAuthors ,其中包括... Book!一遍又一遍...

I want display details book on the screen, but when I executed method GetBook, I have get something weird -model where is a Book, which includes BookAuthors, which includes... Book! And again, and again...

AuthorId 可以,但是Author为null-为什么?

AuthorId is ok, but Author is null - why?

我不知道如何在视图中显示 Authors ?通过foreach?

And I don't have any idea how I can display Authors in the view? By foreach?

推荐答案

您仅包含BookAuthor.您不包括作者.

You only included BookAuthor. You didn't include Author.

将您的GetBook更改为

Change your GetBook to

public Book GetBook(int id)
{
    return _context.Books
                   .Include(a => a.BookAuthors)
                   .Include("BookAuthor.Author")
                   .Single(b => b.Id == id);
}

这篇关于实体框架核心-与多对多关系的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆