2011-12-15 5 views
3

は、時にはそれが、このような基本クラスから私の実体を引き出すために便利です:Fluent APIは、基本クラスから継承したすべてのエンティティでNotMappedを設定できますか?

public abstract class DestructableBase : IDestructable 
{ 
    /// <summary> 
    /// If true, this object should be deleted from the database. 
    /// </summary> 
    [NotMapped] 
    public bool _destroy { get; set; } 
} 

これは、Webクライアントは、データがサーバーにポストバックされたときに削除する必要があるものとして、エンティティをマークすることができます。明らかに、データベースにこのようなプロパティを記録したくないので、[NotMapped]属性を使用します。

私は構成を行うためにFluent APIを使い始めましたが、データ注釈の使用をやめたいと思います。 Fluent APIを使用して、個々のエンティティごとにIgnore()を設定する必要はありませんか?それとももっと良い方法がありますか?

答えて

8

あなたのエンティティ構成の基本クラスとしてこのクラスを使用しようとすることができます:

public class DestructableBaseConfiguration<TEntity> : EntityTypeConfiguration<TEntity> 
    where TEntity : DestructableBase 
{ 
    public DestructableEntityConfiguration() 
    { 
     Ignore(e => e._destroy); 
    } 
} 

DestructableBaseConfiguration由来DestructableBaseニーズエンティティ構成クラスから派生した他のすべてのエンティティ。 modelBuilderに設定をOnModelCreatingに登録します。

+0

ええ、それはやるべきことかもしれません。ありがとうございました。 –

+0

@LadislavMrnka:基本クラスを完全に無視したいのですが? EF 5.0 CFでこれを行う方法はありますか? –

+0

@RaheelKhan:そのような場合、基本クラスをマップしてはならず、EFはそれを無視します。また、基本クラスの 'DbSet'を使用してはいけません。 –

関連する問題