【发布时间】:2025-11-22 01:15:02
【问题描述】:
我按照this guide 中概述的步骤为我的代码优先剃须刀应用程序设置了数据库。这一切都很好,但我不确定如何在我的应用程序中实际使用这个数据库结构。使用来自 t 的代码
public class PersonTpt
{
public Guid Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Type { get; set; }
}
public class CustomerTpt
{
[ForeignKey(nameof(Person))]
public Guid Id { get; set; } // PK and FK pointing to PersonTpt
public PersonTpt Person { get; set; }
public DateTime DateOfBirth { get; set; }
}
public class EmployeeTpt
{
[ForeignKey(nameof(Person))]
public Guid Id { get; set; } // PK and FK pointing to PersonTpt
public PersonTpt Person { get; set; }
public decimal Turnover { get; set; }
}
在这种情况下,我已将“类型”字段添加到 PersonTpt 类。在实际应用程序中,我有一个“/Person/Edit”页面,其中包含用于编辑人员的表单,并且“Type”属性与选择列表相关联。该下拉列表将具有对应于 CustomerTpt 或 EmployeeTpt 的值,我希望表单根据所做的选择添加适当的字段。在我的数据库模型中,“Person”类只能有一个子类,并且会有大量子类(可能数百个),尽管我只展示了两个以保持示例简短
所以我有几个关于这一切的问题......
- 我将如何在编辑页面上实际使用此数据模型?我只需要为每个可能的子类创建一个局部视图吗?或者有没有办法将“变量”子类传递给页面模型?
- 在 EF Core 中是否有一种方法可以在自动检索子类时查询数据库中的“人员”(例如进行大型连接),或者我只需要对逻辑进行硬编码来获取子类基于什么类型是什么?在我链接的指南的示例中,它们只向后退,这更明显,因为那是链接所在的位置
- 我的一个想法是将类数据存储在字典对象(属性名称/值)中,但我认为我不能在表单中使用 razor TagHelpers,对(例如 asp-for、asp-验证等)?
【问题讨论】:
标签: asp.net-core razor .net-core entity-framework-core razor-pages