对于一个项目,我正在展示要添加到购物篮的书籍。我需要连接 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/