CodeFirst EF Core - 可以实现接口吗?

CodeFirst EF Core - Implementing interfaces possible?

我对 EF Core 中的代码优先有点陌生,我正在尝试一些东西,我有点困惑如何实现下面的内容(或者实际上它是否可以实现) .

在我的模型中,我有一个 class 将实体映射到案例,具有以下映射 class

public class CaseEntity
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CaseEntityId { get; set; }
    
    public int CaseId { get; set; }
    public CaseModel Case { get; set; }
    public Guid EntityId { get; set; }
    public EntityModel Entity { get; set; }
}

我现在正在实现 EntityModel 对象。然而,实体可以是 PersonCompany。这两者具有共同的属性,但也存在一些自然差异。我想做的是创建一个 IEntityModel 接口和两个 classes

public class CaseEntity
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CaseEntityId { get; set; }
    
    public int CaseId { get; set; }
    public CaseModel Case { get; set; }
    public Guid EntityId { get; set; }
    public IEntityModel Entity { get; set; }
}

public interface IEntityModel
{
    Guid EntityId { get; set; }
    PostalAddress PrincipalAddress { get; set; }
}

public class CompanyEntity : IEntityModel
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid EntityId { get; set; }
    public string CompanyName { get; set; }
    public PostalAddress PrincipalAddress { get; set; }
}

public class PersonEntity : IEntityModel
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid EntityId { get; set; }
    public PostalAddress PrincipalAddress { get; set; }
    public string FirstNames { get; set; }
    public string Surname { get; set; }
}

当我尝试构建它时出现错误

The property 'CaseEntity.Entity' is of an interface type ('IEntityModel'). If it is a navigation, manually configure the relationship for this property by casting it to a mapped entity type.

Otherwise, ignore the property using the [NotMapped] attribute or 'EntityTypeBuilder.Ignore' in 'OnModelCreating'.

我不是 100% 确定我可以做我想做的事。四处搜索让我有点困惑(这是实现某种功能的解决方案,还是我应该使用实现一个实体 class,它具有支持 Company 或 [= 所需的所有属性13=]?)

我觉得还是建个基地比较好class

public class EntityModel:IEntityModel
{
   [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
   public  int EntityId { get; set; }
   publlic  PostalAddress PrincipalAddress { get; set; }
}

公司实体

public class CompanyEntity : EntityModel
{
    public string CompanyName { get; set; }
}

案例实体

public class CaseEntity
    
    {
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int CaseEntityId { get; set; }
    
    
    public int CaseId { get; set; }
    public CaseModel Case { get; set; }

    public int EntityId { get; set; }
    public virtual EntityModel EntityModel { get; set; }
    }