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添加任何新作业。