通过数据注释创建实体框架 TPH 鉴别器列



我想通过数据注释创建鉴别器列。

[Table("Book")]
public partial class Book
{
    public long BookID { get; set; }
    [StringLength(100)]
    public string name { get; set; }
    public int? page { get; set; }
}

由流利绘制的映射

modelBuilder.Entity<Book>()
            .Map<StoryBook>(m => m.Requires("typetitle").HasValue("story"));

无论如何,我需要在选择结果中有鉴别器列值

我想通过数据注释创建鉴别器列。

您无法为不存在的属性添加批注。

使用 TPH 继承时,鉴别器属性不是类模型的一部分。这是因为将其值设置为另一种类型的值会产生歧义:类型 A,标记为类型 B。因此,EF 只是阻止开发人员这样做。

所以:映射TPH继承只能通过流畅的映射来完成。

无论如何,我需要在选择结果中有鉴别器列值

如果你在代码中需要鉴别器值,这通常表明你要么没有按照应有的方式应用继承,要么根本不应该使用继承。反对使用继承的一个指标是,在某些情况下,对象的"类型"应该在运行时更改(即鉴别器的值被更改)。

最新更新