C# EF 5 TPT继承抽象类问题

C# EF 5 TPT继承抽象类问题,c#,entity-framework,ef-code-first,entity-framework-5,C#,Entity Framework,Ef Code First,Entity Framework 5,在我的项目中,我有一个应映射到数据库的基类: public abstract class EntityBase { protected EntityBase() { UniqueId = Guid.NewGuid(); CreationDate = DateTime.Now; LastModified = DateTime.Now; } #region Properties public Int64 Id

在我的项目中,我有一个应映射到数据库的基类:

public abstract class EntityBase
{
    protected EntityBase()
    {
        UniqueId = Guid.NewGuid();
        CreationDate = DateTime.Now;
        LastModified = DateTime.Now;

    }

    #region Properties
    public Int64 Id { get; set; }
    public Guid UniqueId { get; set; }
    public byte[] Version { get; set; }
    public DateTime CreationDate { get; set; }
    public DateTime LastModified { get; set; }
    #endregion

    #region Navigation Properties
    public virtual long CreatedBy { get; set; }
    public virtual long UpdatedBy { get; set; }
    #endregion

}
有些实体具有共享属性,因此我为那些不应该映射的实体创建了另一个基础,这些属性甚至共享的属性也应该映射到它自己的实体中:

[Serializable]
public abstract class ApplicationEntityBase : EntityBase
{

    #region Properties
    public string Title { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Icon { get; set; }
    #endregion

}
现在的问题是,当我尝试创建数据库实体框架时,为实体库创建了大约20个表

这些映射是:

 public class EntityMapping : EntityTypeConfiguration<EntityBase>
{
    public EntityMapping()
    {

        ToTable("Entity");

        HasKey(e => e.Id);
        Property(e => e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        Property(e => e.UniqueId).IsRequired();
        Property(e => e.Version).IsRequired().IsRowVersion();
        Property(e => e.CreationDate).IsRequired();
        Property(e => e.LastModified).IsRequired();
        Property(e => e.Order);
        Property(e => e.CreatedById).IsRequired();
        Property(e => e.UpdatedById).IsRequired();

    }
}
公共类EntityMapping:EntityTypeConfiguration
{
公共实体映射()
{
可转让(“实体”);
HasKey(e=>e.Id);
属性(e=>e.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
属性(e=>e.UniqueId).IsRequired();
属性(e=>e.Version).IsRequired().IsRowVersion();
属性(e=>e.CreationDate).IsRequired();
属性(e=>e.LastModified).IsRequired();
属性(e=>e.Order);
属性(e=>e.CreatedById).IsRequired();
属性(e=>e.UpdatedById).IsRequired();
}
}
应用程序实体映射的示例如下:

 public abstract class ApplicationMappingBase<TEntity> : EntityTypeConfiguration<TEntity>
   where TEntity : ApplicationEntityBase
{
    protected ApplicationMappingBase()
    {
        //Map(m => m.ToTable(typeof(TEntity).Name));

        Property(e => e.Title).IsRequired();
        Property(e => e.Name).IsRequired();
        Property(e => e.Description);
        Property(e => e.Icon);
    }
}

public class ActionMapping : ApplicationMappingBase<Entities.Core.Security.Action>
{
    public ActionMapping()
        : base()
    {
        Map(m => m.ToTable("Action"));

        Property(e => e.IsGeneral).IsRequired();
        Property(e => e.OnBefore).IsOptional();
        Property(e => e.OnAfter).IsOptional();
        Property(e => e.DoneMessage).IsOptional();
        HasMany(d => d.Activities).WithRequired(t => t.Action);
    }
}
公共抽象类ApplicationMappingBase:EntityTypeConfiguration 其中tenty:applicationTityBase { 受保护的ApplicationMappingBase() { //Map(m=>m.ToTable(typeof(tenty.Name)); 属性(e=>e.Title).IsRequired(); 属性(e=>e.Name).IsRequired(); 属性(e=>e.Description); 属性(e=>e.Icon); } } 公共类ActionMapping:ApplicationMappingBase { 公共行动映射() :base() { Map(m=>m.ToTable(“Action”); 属性(e=>e.IsGeneral).IsRequired(); 属性(e=>e.OnBefore).IsOptional(); 属性(e=>e.OnAfter.IsOptional(); 属性(e=>e.DoneMessage).iso可选(); 有许多(d=>d.Activities),需要(t=>t.Action); } } 你能告诉我我的密码有什么问题吗?我做错什么了吗? 我读了很多文章,包括但没有发现与我的情况相同的