C# MVC ASP 3表联接,然后显示结果

C# MVC ASP 3表联接,然后显示结果,c#,mysql,asp.net,asp.net-mvc,linq,C#,Mysql,Asp.net,Asp.net Mvc,Linq,对于一个项目,我正在展示用于添加到篮子中的书籍。我需要连接3个表以显示可用的格式:我需要:Books到bookID上的BookFormats,然后BookFormats到formatID上的formats。这是一个我无法更改的预编数据库。我编写了一个LINQ查询来显示它们,并创建了一个包含所有3个属性的视图模型 linq查询: IEnumerable<BookAndFormatViewModel> IEBooksRepository.GetAllBooksWithFo

对于一个项目,我正在展示用于添加到篮子中的书籍。我需要连接3个表以显示可用的格式:我需要:Books到bookID上的BookFormats,然后BookFormats到formatID上的formats。这是一个我无法更改的预编数据库。我编写了一个LINQ查询来显示它们,并创建了一个包含所有3个属性的视图模型

linq查询:

        IEnumerable<BookAndFormatViewModel> IEBooksRepository.GetAllBooksWithFormats()
    {
        var query =
            from book in eBooks.Books
            join format in eBooks.BookFormats on book.BookID equals format.BookID
            join formatName in eBooks.Formats on format.FormatID equals formatName.FormatID
            select new BookAndFormatViewModel();
        return query.ToList();
    public int BookID { get; set; }
    public string ReferenceNumber { get; set; }
    public string Title { get; set; }
    public decimal Price { get; set; }
    public int FormatID { get; set; }
    public string FormatType { get; set; }
        IEnumerable<BookModel> books = repository.GetAllBooks();
        IEnumerable<BookAndFormatViewModel> booksWithFormat = repository.GetAllBooksWithFormats();

        if (books.Count() == 0)
        {
            return PartialView("NoBooks");

        }
        return PartialView("Books", booksWithFormat);   
控制器代码:

        IEnumerable<BookAndFormatViewModel> IEBooksRepository.GetAllBooksWithFormats()
    {
        var query =
            from book in eBooks.Books
            join format in eBooks.BookFormats on book.BookID equals format.BookID
            join formatName in eBooks.Formats on format.FormatID equals formatName.FormatID
            select new BookAndFormatViewModel();
        return query.ToList();
    public int BookID { get; set; }
    public string ReferenceNumber { get; set; }
    public string Title { get; set; }
    public decimal Price { get; set; }
    public int FormatID { get; set; }
    public string FormatType { get; set; }
        IEnumerable<BookModel> books = repository.GetAllBooks();
        IEnumerable<BookAndFormatViewModel> booksWithFormat = repository.GetAllBooksWithFormats();

        if (books.Count() == 0)
        {
            return PartialView("NoBooks");

        }
        return PartialView("Books", booksWithFormat);   
IEnumerable books=repository.GetAllBooks();
IEnumerable booksWithFormat=repository.GetAllBooksWithFormats();
如果(books.Count()==0)
{
返回PartialView(“NoBooks”);
}
返回PartialView(“Books”,booksWithFormat);

当我运行它时,它只显示空数据0和空字段。

最终的解决方案是更改模型的构造函数,然后像这样创建模型:

            var query =
            from book in eBooks.Books
            join format in eBooks.BookFormats on book.BookID equals format.BookID
            join formatName in eBooks.Formats on format.FormatID equals formatName.FormatID
            select new BookAndFormatViewModel
            {
                BookID = book.BookID,
                ReferenceNumber = book.ReferenceNumber,
                Title = book.Title,
                Price = book.Price,
                FormatID = format.FormatID,
                FormatType = formatName.FormatType
            };

此行:
selectnewbookandformatviewmodel()
正在创建一个空模型,您尚未为属性分配任何值,例如
BookId=book.Id,ReferenceNumber=book.RefNo
etc@markpsmith如果我为构造函数添加了参数,它不会只生成一个条目吗?是否有办法添加每个条目?它将创建一个
列表