在基类中定义主键的情况下,如何实现基类和派生类



给定以下代码示例,您如何在实体框架核心中实现这一点,其中您不希望为基类创建表,但希望为派生类创建表,并且主键在基类中定义?

public class JobBase
{
public JobBase() { }
public Guid JobId { get; set; } = Guid.NewGuid();
public string Title { get; set; }
}
public class Job : JobBase
{
public Job() { }
public String AdditionalInformation { get; set; }
}

下面是我的DBContext类中的内容:

public DbSet<Job> Jobs { get; set; }
var job = mb.Entity<Job>();
job.HasKey(aa => aa.JobId);
job.Property(aa => aa.JobId).HasColumnName("JobId");

我目前在尝试添加迁移时遇到以下错误:

无法在"Job"上配置键,因为它是派生类型。必须在根类型"JobBase"上配置密钥。如果您不打算将"JobBase"包含在模型中,请确保它未被上下文中的DbSet属性引用、未在对ModelBuilder的配置调用中引用或未从模型中包含的类型的导航中引用。

我正在做的错误消息的唯一一部分是JobBase是从模型中包含的类型的导航中引用的,但这样做是我最初实现这种关系的全部原因,所以我不能只是删除该导航。

modelBuilder.Entity<Job>().HasKey(x => x.JobId).ToTable("Job");

EF继承与主键

最新更新