我想创建一种在我的实体框架应用程序中应用软删除的通用方法。我有一个定义删除字段的接口模型:
public interface IModel
{
bool Deleted { get; set; }
Nullable<DateTime> Created { get; set; }
Nullable<DateTime> Modified { get; set; }
}
我的应用程序中几乎每个模型都实现了这个IModel
。为了让DbContext
省略删除设置为true的所有记录,我想应用映射。我已经使用this好文章作为我实施的基础。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<IModel>()
.Map(m => m.Requires("Deleted").HasValue(false))
.Ignore(m => m.Deleted);
}
然而,实体框架(显然)不支持接口上的映射。这让我一直在努力让这个工作以这样一种方式工作,即我不必单独将这个映射应用于每个模型。
我是否有其他流畅的API方法可以在所有实现IModel
的模型上应用映射而不需要大量多余的代码?