3

SQL Server データベースに対して EF 5 Code First を使用するアプリケーションに取り組んでいます。ドメイン オブジェクトの一部は、、DomainEntity、 などの共有プロパティを含む基本抽象クラスから継承しています。IdDateCreatedDateModified

既定では、EFdatetimeは type のプロパティの列を作成しますDateTimesmalldatetimeのすべてのサブクラスの代わりに列を作成するように指示する方法を探していました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")]

私は、この DB 固有のマッピング情報を EF コンテキスト内に保持し、POCO から除外することを本当に望んでいます。

4

0 に答える 0