Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 使用两列作为鉴别器_Entity Framework_.net Core - Fatal编程技术网

Entity framework 使用两列作为鉴别器

Entity framework 使用两列作为鉴别器,entity-framework,.net-core,Entity Framework,.net Core,是否可以使用两列作为鉴别器。例如,类似于: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Job>() .HasDiscriminator<string>("Type") .HasValue<Models.SpecificJob>("attack");

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

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");

    }
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasDiscriminator(“类型”)
.HasValue(“攻击”);
modelBuilder.Entity()
.HasDiscriminator(“域”)
.HasValue(“火灾国家”);
}

现在,它似乎只使用最后一个鉴别器,而忽略第一个鉴别器。

否。鉴别器表示子类型,EF(和.NET)不支持

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

可以为实体的筛选子集添加“getter”。例如:

    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");
 . . .
classdb:DbContext
{
公共数据库集作业{get;set;}
public IQueryable AttackJobs=>Jobs.Where(j=>j.Type==“攻击”);
public IQueryable FireNationJobs=>Jobs.Where(j=>j.Domain==“fire_nation”);
. . .

否。鉴别器表示子类型,EF(和.NET)不支持

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

您可以为实体的筛选子集添加“getter”。例如:

    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");
 . . .
classdb:DbContext
{
公共数据库集作业{get;set;}
public IQueryable AttackJobs=>Jobs.Where(j=>j.Type==“攻击”);
public IQueryable FireNationJobs=>Jobs.Where(j=>j.Domain==“fire_nation”);
. . .

那么,有没有办法进行修改,使GET、Update等查询只从与该类型和域匹配的记录中提取?对于.NET核心生态系统来说,这是一个非常新的问题,但我假设可能有一些自定义代码可以添加到上下文中?您可以添加特殊的“GET”方法,但您可以使用基本数据库集来添加任何新作业。那么,是否有办法进行修改,以便GET、Update等查询仅从与该类型和域匹配的记录中提取?对于.NET核心生态系统来说,这是一个非常新的问题,但我假设可能有一些自定义代码可以添加到上下文中?您可以添加特殊的“GET”方法,但可以使用基DbSet添加任何新作业。