我正在尝试迁移以下模型,并且继承未反射(reflect)在生成的迁移脚本中。我缺少什么?我目前正在使用 PM 来处理迁移脚本生成,在针对 SQL 2016 的 VS2017 中通过简单的 Add-Migration 和 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;}
}
最佳答案
为了按照约定将某种类型包含在模型中,您需要指向该类型的 DbSet 属性或 Navigation 属性,或者在 OnModelCreating
中引用它。 Facility
类上有导航属性。也许某些指向模型中包含的类型上的 Facility
的反向导航会导致包含 Facility
。但除非您明确引用,否则不会添加 Helipad
。 EF Core 为模型中包含且具有层次结构的类型设置 TPH。但如果不包含的话,它不会尝试在层次结构中查找类型。
要解决此问题,最简单的方法是为要包含在 DbContext 的派生类中的类型添加 DbSet 属性。如果您不想公开该类型的 DbSet 属性,则可以在 OnModelCreating
方法中编写以下内容。
modelBuilder.Entity<Helipad>();
希望这能解决问题。
关于inheritance - EF Core 继承的属性未反射(reflect)在迁移脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45680187/