我正在尝试在我们的 EF 6 项目中实现软删除。我们正在使用数据库优先方法,我注意到您不能覆盖 OnModelCreating
。
使用代码优先方法时,可以为特定实体应用全局过滤器,如本 blog post 中所述.
我如何使用数据库优先方法重新创建它?
public class MyContext : DbContext
{
public virtual IDbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.Map(m => m.Requires("IsDeleted").HasValue(false))
.Ignore(m => m.IsDeleted);
}
}
最佳答案
public class MyContext : DbContext
{
public virtual IDbSet<Company> Companies { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Company>()
.Map(m => m.Requires("IsDeleted").HasValue(false))
.Ignore(m => m.IsDeleted);
base.OnModelCreating(modelBuilder);
}
}
你需要编写 base.OnModelCreating(modelBuilder);构建您的查询,我还在帖子中突出显示了一行。
关于c# - 如何使用具有数据库优先方法的 DbModelBuilder 来实现软删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792020/