我通过覆盖类似于魅力的上下文的SaveChanges方法来使用软删除,但我无法过滤具有IsDeleted column = true的条目。 我使用的是EF4,我知道它已经过时了,但是这个项目很大,而且我没有太多升级EF版本的经验,对此也有很多建议。
我已经尝试了这个但是它没有工作,只要我将实体绑定到带有db.Foo.ToList()的gridview,我就会得到所有列,包括软删除的列。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>()
.Map(m => m.Requires("IsDeleted").HasValue(false));
}
提前致谢!!
编辑:我发布了我找到的解决方案!! 我希望它适用于未来的访问者。来自阿根廷的干杯。
答案 0 :(得分:0)
您可能希望查看NotMapped
属性数据注释以排除IsDeleted
属性。
public class Foo
{
public int ID { set; get; }
public string Name { set; get; }
[NotMapped]
public bool IsDeleted { set; get; }
}
您需要使用System.ComponentModel.DataAnnotations
命名空间才能使用NotMapped
属性。
或者,您可以在Ignore()
方法
OnModelCreating
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Foo>().Ignore(t => t.IsDeleted);
base.OnModelCreating(modelBuilder);
}
另请查看以下链接,了解如何升级EF
https://msdn.microsoft.com/en-us/library/dn469466(v=vs.113).aspx
答案 1 :(得分:0)
我做的工作是:
1-直接在图形视图中从模型中删除属性。
2-在Model context.edmx的图形视图中,右键单击您正在处理的模型,然后单击Table Mappings。
3-在那里,我选择了IsDeleted列,选择运算符&#34; Is&#34;在右侧,只需输入Null。
之后,所有查询都会过滤掉列,并且我只能列出非软删除的行。 我在深夜阅读的30个帖子中看到了这个解决方案,它就像一个魅力!