c# - MVC ASP 3 表连接然后显示结果

标签 c# mysql asp.net asp.net-mvc linq

对于一个项目,我正在展示要添加到购物篮的书籍。我需要连接 3 个表才能显示可用的格式:我这样做:Books 到 bookID 上的 BookFormats,然后 BookFormats 到 formatID 上的 Format。这是一个预先布局的数据库,我无法更改。我编写了一个 LINQ 查询来显示所有这些,并创建了一个具有所有 3 个属性的 View 模型。

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();

三者的 View 模型:

    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; }

Controller 代码:

        IEnumerable<BookModel> books = repository.GetAllBooks();
        IEnumerable<BookAndFormatViewModel> booksWithFormat = repository.GetAllBooksWithFormats();

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

        }
        return 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
            };

关于c# - MVC ASP 3 表连接然后显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32736893/

相关文章:

c# - IEnumerable 和 Array、IList 和 List 有什么区别?

c# - 格式化没有 string.Format 的字符串?

c# - 要求对 OWIN 应用程序的所有请求进行身份验证

php - 从数据库中输出元组的总和

Mysql选择最大日期直到第一次丢失

c# - 要调用此方法, "Membership.Provider"属性必须是 "ExtendedMembershipProvider"的实例

mysql - 我可以选择不在 RIGHT JOIN 或 JOIN 中的行吗?

asp.net - 异步启动长时间运行的进程

c# - 如何使用 DataBinder.Eval 在 gridview 中选中复选框

asp.net - w3wp.exe 对每个请求的 CPU 使用率都很高