【发布时间】:2016-02-09 02:48:12
【问题描述】:
我正在使用 Entity Framework beta 8 和 Code First 来处理 SQLite 数据库。
我需要 TPH 继承,但默认情况下它使用 TPT 继承。
这是我的代码的一部分:
public abstract partial class Amenity
{
[Key]
public int AmenityId { get; set; }
public string AmenityName { get; set; }
}
public class AmenityCountable : Amenity
{
public int AmenityMinValue { get; set; }
public int AmenityMaxValue { get; set; }
public string AmenityTypeName { get; set; }
}
public class AmenityOptionable : Amenity
{
public bool CanHaveMultipleValues { get; set; }
}
public class KMContext : DbContext
{
public virtual DbSet<Amenity> Amenities { get; set; }
public virtual DbSet<AmenityCountable> AmenityCountable { get; set; }
public virtual DbSet<AmenityOptionable> AmenityOptionable { get; set; }
}
如何修改它以使其使用 TPH 继承?
【问题讨论】:
-
没有使用 EF7 的经验,但在 EF6 中,我们使用 ToTable 进行 TPH 映射。尝试使用 [Table("Amenity")] 属性标记 AmenityCountable 和 AmenityOptionable 类。
-
@3615 我试过了,但是在使用 Add-Migration 时出现以下错误:“不能在模式 '' 中为实体 'AmenityCountable' 使用表 'Amenity',因为它正在用于另一个实体。 "
标签: c# .net entity-framework inheritance entity-framework-core