可以在从基类继承的所有实体上使用流畅的API设置NotMapped吗?

C.J*_*.J. 3 entity-framework entity-framework-4.1

有时从基类派生我的实体是有用的,如下所示:

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

这允许Web客户端将数据标记为在将数据发布回服务器时需要被删除.显然我不希望在数据库中记录这样的属性,所以我使用[NotMapped]属性.

我已经开始越来越多地使用流畅的API来完成我的配置,并希望停止使用数据注释.有没有办法使用流畅的API来执行此操作,而无需单独在每个实体上设置Ignore()?或者有更好的方法吗?

Lad*_*nka 8

您可以尝试将此类用作实体配置的基类:

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

现在每个其他实体派生自DestructableBase需要实体配置类派生而来DestructableBaseConfiguration.您将注册您的配置,以modelBuilderOnModelCreating.