SQL Server データベースに対して EF 5 Code First を使用するアプリケーションに取り組んでいます。ドメイン オブジェクトの一部は、、DomainEntity
、 などの共有プロパティを含む基本抽象クラスから継承しています。Id
DateCreated
DateModified
既定では、EFdatetime
は type のプロパティの列を作成します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")]
。
私は、この DB 固有のマッピング情報を EF コンテキスト内に保持し、POCO から除外することを本当に望んでいます。