带有可为空鉴别器的 EF Core HasDiscriminator
EF Core HasDiscriminator with nullable discriminator
我试图说明我已经在实体上有一个鉴别器,但我不确定如何在这里表示它。
它们之间的鉴别器是列是否为空。很明显,它是 null 的情况我可以明确地说明,但是如果它不是 null 的情况我该怎么办?
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<Schedule>()
.HasDiscriminator<Guid?>("ManagerId")
.HasValue<EmployeeSchedule>(null)
.HasValue<ManagerSchedule>(/* What goes here? */);
}
通过将 属性 bool IsManagerSchedule
放在 Schedule
上,然后使用 .HasValue<ManagerSchedule>(true).HasValue<EmployeeSchedule>(false);
.
解决了这个问题
尝试删除手动配置,然后:
public class EmployeeSchedule {
// properties of all employees...
}
public class ManagerSchedule {
public TYPE PropertyName {get; set;} // discriminator property
}
我试图说明我已经在实体上有一个鉴别器,但我不确定如何在这里表示它。
它们之间的鉴别器是列是否为空。很明显,它是 null 的情况我可以明确地说明,但是如果它不是 null 的情况我该怎么办?
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<Schedule>()
.HasDiscriminator<Guid?>("ManagerId")
.HasValue<EmployeeSchedule>(null)
.HasValue<ManagerSchedule>(/* What goes here? */);
}
通过将 属性 bool IsManagerSchedule
放在 Schedule
上,然后使用 .HasValue<ManagerSchedule>(true).HasValue<EmployeeSchedule>(false);
.
尝试删除手动配置,然后:
public class EmployeeSchedule {
// properties of all employees...
}
public class ManagerSchedule {
public TYPE PropertyName {get; set;} // discriminator property
}