我正在使用Entity Framework Core开发Asp.Net Core 3应用程序。
我在继承方面遇到问题,不确定如何完成所需的工作。
我的模特:
public abstract class Person
{
public int Id {get; set;}
public string name {get; set;}
}
public class Renter: Person
{
public string address{get; set;}
public ICollection<Invoice> Invoices{get;set;}
}
public class UserProfile: Person
{
public string BankAccount {get;set;}
public ICollection<Invoice> Invoices{get;set;}
}
public class Invoice
{
public DateTime Date {get;set;}
public Renter Renter {get; set;}
[Required]
public int RenterId {get; set;}
public UserProfile UserProfile{get; set;}
[Required]
public int UserProfileId {get; set;}
}
现在我得到一个数据库异常:外键约束失败:RenterId引用Person.Id。 我可以使用Fluent Api手动配置安装程序吗? 问题在于,发票需要一个Renter和一个UserProfile,但是Person.Id是Renter和UserProfile的主键。
非常感谢您的帮助。
答案 0 :(得分:0)
是的,您可以使用流畅的API。假设您正在使用每种类型的表格(TPT):
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Renter>().ToTable("Renter");
modelBuilder.Entity<UserProfile>().ToTable("UserProfile");
}
请参阅:https://www.entityframeworktutorial.net/code-first/inheritance-strategy-in-code-first.aspx