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);
}
}
你能告诉我我的密码有什么问题吗?我做错什么了吗?
我读了很多文章,包括但没有发现与我的情况相同的