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

Entity framework core 在基类中定义了主键的情况下,如何实现基类和派生类,entity-framework-core,blazor-webassembly,Entity Framework Core,Blazor Webassembly,给出下面的代码示例,如果不希望为基类创建表,但希望为派生类创建表,并且主键在基类中定义,那么如何在entity framework core中实现此功能 public class JobBase { public JobBase() { } public Guid JobId { get; set; } = Guid.NewGuid(); public string Title { get; set; } } public class Job : JobBase {

给出下面的代码示例,如果不希望为基类创建表,但希望为派生类创建表,并且主键在基类中定义,那么如何在entity framework core中实现此功能

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");
公共数据库集作业{get;set;}
var job=mb.Entity();
HasKey(aa=>aa.JobId);
job.Property(aa=>aa.JobId).HasColumnName(“JobId”);
我当前在尝试添加迁移时遇到以下错误:

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

我正在执行的错误消息的唯一部分是从模型中包含的类型的导航中引用了JobBase,但这样做是我首先实现此关系的全部原因,因此我不能删除该导航。

modelBuilder.Entity().HasKey(x=>x.JobId).ToTable(“作业”);
modelBuilder.Entity<Job>().HasKey(x => x.JobId).ToTable("Job");

您引用的帖子已有7年历史。在我的智能感知中,我没有看到一个.ToTable选项。我是否缺少某些内容或实体框架核心中没有此内容?请安装Microsoft.EntityFrameworkCore.RelationalDone。我仍然没有得到“ToTable”的intellisense,如果我继续键入它,我会得到以下编译错误。同时我会用谷歌搜索这个,但以防万一你知道问题出在哪里…“KeyBuilder”不包含“ToTable”的定义,最好的扩展方法重载“RelationalEntityTypeBuilderExtensions.ToTable”(EntityTypeBuilder,string)'需要'EntityTypeBuilder'类型的接收器。如果不需要,请尝试删除它。是否尝试删除Nuget包?我不知道是否需要。您提供的解决方案看起来很有希望,但我目前不知道如何才能调用.ToTable(),如果这确实是解决方案的话。您是否尝试过
mb.Entity().HasKey(aa=>aa.JobId)
而不是
mb.Entity().HasKey(aa=>aa.JobId)?这也不起作用。这会导致EF创建我不想要的JobBase表。请将JobBase.JobId更改为JobBaseId或Id,或在JobId上添加[Key]属性。默认的主键规则是:类应具有用于主键的“CLASSId”或“Id”属性。在其他属性命名类型中,应使用属性“[Key]”。将JobId更改为Id是更好的解决方案。