3

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

默认情况下,EFdatetime为类型的属性创建列DateTime。我一直在寻找一种方法来告诉它smalldatetimeDomainEntity.

我尝试了以下方法:

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 中。

4

0 回答 0