首先更改Entity Framework 5代码中从基类继承的属性的数据类型

时间:2013-03-24 16:33:55

标签: ef-code-first entity-framework-5

我正在开发一个针对SQL Server数据库使用EF 5 Code First的应用程序。我的一些域对象继承自包含共享属性的基本抽象类DomainEntity,例如IdDateCreatedDateModified等。

默认情况下,EF会为datetime类型的属性创建DateTime列。我一直在寻找一种方法来告诉它为smalldatetime的所有子类创建DomainEntity列。

我尝试了以下内容:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Ignore<DomainEntity>();   
    modelBuilder.Entity<DomainEntity>()
        .Property(e => e.DateCreated).HasColumnType("smalldatetime"); 
}

不幸的是上面没有效果。如果我删除了Ignore<DomainEntity>行,那么EF会创建一个名为DomainEntities的单独表格。

似乎唯一有效的方法是在DateTime的每个子类中明确映射DomainEntity属性,但显然这是不切实际的,因为我有几十个这样的类。

我正在尝试做什么?


更新

当我使用数据注释[System.ComponentModel.DataAnnotations.Schema.Column(TypeName="smalldatetime")]修饰基类的日期属性时,它可以正常工作。

虽然我真的更喜欢将这个特定于数据库的映射信息保存在EF上下文中,而不是我的POCO中。

0 个答案:

没有答案