实体框架创建其他ID字段

时间:2016-07-13 08:48:10

标签: c# entity-framework inheritance

我正在开发一个我正在使用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());

    }

0 个答案:

没有答案