使用两列作为区分符

时间:2018-11-29 23:35:55

标签: entity-framework .net-core

是否可以使用两列作为鉴别符。例如,类似:

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Job>()
          .HasDiscriminator<string>("Type")
          .HasValue<Models.SpecificJob>("attack");

        modelBuilder.Entity<Job>()
          .HasDiscriminator<string>("Domain")
          .HasValue<Models.SpecificJob>("fire_nation");

    }

现在,似乎只需要最后一个鉴别符,而忽略了第一个鉴别符。

1 个答案:

答案 0 :(得分:2)

不。鉴别符指示子类型,并且EF(和.NET)不支持Multiple Inheritence

但是您可以(并且应该)只使用普通属性,一个用于“类型”,一个用于“域”。

您可以为实体的已过滤子集添加“字母”。 EG:

    class Db : DbContext
    {

        public DbSet<Job> Jobs { get; set; }
        public IQueryable<Job> AttackJobs => Jobs.Where(j => j.Type == "attack");
        public IQueryable<Job> FireNationJobs => Jobs.Where(j => j.Domain == "fire_nation");
 . . .