我正在研究一个项目,用户可以从数据库中添加/编辑/删除一本书并进行预订。基本上是一个图书馆数据库。在我的用户表(TblUser)中,我具有userId(PK),名称,电子邮件等。在我的书表(TblBook)中,我具有bookID(PK),书名,作者等。最后,我具有具有resID(PK)的TblBookStatus ),bookID,用户ID和状态。由于某些项目特定的原因,我没有将bookID和userID连接为外键。当用户预订一本书时,用户ID,bookID和状态已作为一行添加到TblBookStatus表上。我想做的是,我想显示一个由用户(TblBookStatus)保留的书。这是我的C#代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using LibMan.Models.DB;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
namespace LibMan.Pages
{
public class LibraryModel : PageModel
{
private readonly LibMan.Models.DB.LibManContext _context;
public string Message { get; set; }
public LibraryModel(LibMan.Models.DB.LibManContext context)
{
_context = context;
}
public IList<TblBookStatus> TblBookStatus { get; set; }
public IList<TblBook> TblBook { get; set; }
public IList<TblBook> DisplayBook { get; set; }
public async Task OnGetAsync()
{
TblBookStatus = await _context.TblBookStatus.ToListAsync();
TblBook = await _context.TblBook.ToListAsync();
foreach(var item in TblBook)
{
foreach(var item2 in TblBookStatus)
{
if(item.BookId == item2.BookId)
{
DisplayBook.Add(item);
}
}
}
}
}
}
我试图将两个表都变成列表,并检查相交的书本ID,并创建一个新列表来显示它们,但出现错误:NullReferenceException:对象引用未设置为对象的实例。 on DisplayBook.Add(item);
行>
我见过人们在写SQL命令,但是我不确定是否应该这样做。这是HTML面
@page @model LibMan.Pages.LibraryModel @{ ViewData["Title"] = "Library"; Layout = "~/Pages/Shared/_postLoginLayout.cshtml"; } <h1>Library</h1> <p> <a asp-page="Create">Add a new Book</a> </p> <table class="table"> <thead> <tr> <th> @Html.DisplayNameFor(model => model.TblBook[0].Title) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Author) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Translator) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Publisher) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Description) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Category) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Status) </th> <th> @Html.DisplayNameFor(model => model.TblBook[0].Cover) </th> <th></th> </tr> </thead> <tbody> @foreach (var item in Model.DisplayBook) { <tr> <td> @Html.DisplayFor(modelItem => item.Title) </td> <td> @Html.DisplayFor(modelItem => item.Author) </td> <td> @Html.DisplayFor(modelItem => item.Translator) </td> <td> @Html.DisplayFor(modelItem => item.Publisher) </td> <td> @Html.DisplayFor(modelItem => item.Description) </td> <td> @Html.DisplayFor(modelItem => item.Category) </td> <td> @Html.DisplayFor(modelItem => item.Status) </td> <td> @Html.DisplayFor(modelItem => item.Cover) </td> <td> <a asp-page="./GetBook" asp-route-id="@item.BookId">Get Book</a> | <a asp-page="./Edit" asp-route-id="@item.BookId">Edit</a> | <a asp-page="./Details" asp-route-id="@item.BookId">Details</a> | <a asp-page="./Delete" asp-route-id="@item.BookId">Delete</a> </td> </tr> } </tbody> </table>
感谢您的帮助!
我正在研究一个项目,用户可以从数据库中添加/编辑/删除一本书并进行预订。基本上是一个图书馆数据库。在我的用户表(TblUser)中,我具有userId(PK),名称,电子邮件等。在我的...
在构造函数中初始化DisplayBook列表。