我正在尝试迁移以下模型,并且继承没有反映在生成的迁移脚本中。我错过了什么?我目前正在使用PM通过简单的Add-Migration处理迁移脚本生成,然后在VS2017中针对SQL 2016进行Update-Database。
public class Facility
{
[Key]
public int ID { get; set; }
public bool Deleted { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public byte? Image { get; set; }
public List<LocationFacility> LocationFacilities { get; set; }
}
public class Helipad : Facility
{
public decimal Size { get; set; }
public decimal MaximumWeight {get; set;}
}
答案 0 :(得分:1)
为了按照约定将某些类型包含在模型中,您需要DbSet属性或指向该类型的Navigation属性,或者在OnModelCreating
中引用它。 Facility
类上有导航属性。也许在模型中包含的类型上指向Facility
的某些反向导航会导致Facility
被包含。但是除非您明确引用它,否则不会添加Helipad
。 EF Core为模型中的包含类型设置了TPH。有层次结构。但如果不包括在内,它不会尝试在层次结构中查找类型。
要解决此问题,最简单的方法是为要包含在Derived类DbContext中的类型添加DbSet属性。如果您不想公开该类型的DbSet属性,则可以在OnModelCreating
方法中编写以下内容。
modelBuilder.Entity<Helipad>();
希望这可以解决问题。