我正在开发一个我正在使用Entity框架的应用程序。我有一个名为BaseEntity的抽象类,它被所有其他类继承;它包含所有其他类共有的属性 - Id(PK),CreatedDate,ModifiedDate,CreatedBy和ModifiedBy。
public abstract class BaseEntity
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public DateTime CreatedDate
{
get ; set ;
}
public DateTime? ModifiedDate
{
get; set;
}
public string CreatedBy { get; set; }
public string ModifiedBy { get; set; }
[Timestamp]
public byte[] Version { get; set; }
}
我有一个名为City的类,它继承了上面的类
public class City : BaseEntity
{
public string Name { get; set; }
}
我现在遇到的问题是实体框架正确地在列Id中插入PK值,但是它创建了一个额外的列City_Id,它是null。由于我使用基类中的Id列作为PK,因此我不需要City_Id列。我怎么能摆脱它?我知道实体框架的惯例是使用ID或Type_Id作为PK。
Fluent API配置
public class CityConfig : EntityTypeConfiguration<City>
{
public CityConfig()
{
Property(x => x.Name).IsRequired().HasMaxLength(50);
Property(x => x.CreatedBy).IsRequired().HasMaxLength(50);
Property(x => x.ModifiedBy).IsRequired().HasMaxLength(50);
}
}
我的背景如下所示
public virtual DbSet<City> Cities { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//Other lines removed for brevity
modelBuilder.Configurations.Add(new CityConfig());
}