我对 .NET Core 相当陌生,我正在开发一个小型项目,一个公寓预订网站。
我已经为该网站制作了数据模型和数据表。当我使用 Razor 视图构建新控制器时,当表中存在外键时,创建表单将无法工作。
简单表格的基本创建工作是有效的。我尝试了一切,我给了 ChatGPT 我所有的代码,但它仍然不起作用。我做错了什么?
有2个数据表
Apartments
和Bookings
。以下是表单中所需的 2 个数据类(它们从 ID
继承了 BaseEntity
):
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace Vendeghazak.Data
{
public class Booking : BaseEntity
{
public int GuestID { get; set; }
public DateTime CheckInDate { get; set; }
public DateTime CheckOutDate { get; set; }
public string? Comment { get; set; }
public string? Status { get; set; }
public bool Cancelled { get; set; }
[ForeignKey("ApartmentId")]
public int ApartmentId { get; set; }
public Apartment Apartment { get; set; }
public int NumberOfPersons { get; set; }
public int PersonsUnder18 { get; set; }
public string BillingAddress { get; set; }
public string BillingEmail { get; set;}
}
public class Apartment : BaseEntity
{
public string Name { get; set; }
public int Capacity { get; set; }
}
public partial class BaseEntity
{
public int Id { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
}
}
我尝试从外键注释中删除
Id
,但没有帮助。当我提交表单时,Apartments
子项始终为空,因此ModelState
无效。有一个公寓的下拉列表,我尝试了不同的方法来正确填充它,但没有成功。
我还尝试将公寓的ID值硬编码到视图中,然后在控制器中手动分配它,但是提交后
Apartments
子键始终为空。
我做错了什么?
默认情况下,当您检索 Bookings 时,LINQ 不会加载 Apartments 表。
将以下内容添加到加载 Booking 的 LINQ 语句中。
.Include(x => x.Apartment)