实体框架过滤逻辑删除的记录

蒂亚戈·库斯托迪奥(Thiago Custodio)

我正在使用EF 5.0和Code First。在我的通用存储库中,我有一种逻辑上排除记录的方法。此方法实际上执行更新,将实体字段的状态设置为false。

我想拦截我的查询,并仅在status == true的地方进行过滤。

有没有简单的方法可以做到这一点?前任:

new GenericRepository<Entity>().ToList(); 
// and internally it will filter where status == true.
拉斐尔的老房子

创建一个通用方法

public IQueryable<T> All<T>(Expression<Func<T, bool>> predicate) {

  return context.Set<T>().Where(predicate);

}

并且如果您想要更多与您的status属性链接的东西,则必须使用反射并自己构建Lambda(因为您不能使用带有linq的接口来引发查询)。

诸如此类(未经测试),调用泛型All方法。

   public IQueryable<T>AllButDeleted<T>() {
     var property = typeof(T).GetProperty("status");
     //check if T has a "status" property
     if (property == null && || property.PropertyType != typeof(bool)) throw new ArgumentException("This entity doesn't have an status property, or it's not a boolean");
     //build the expression
     //m =>
      var parameter = new ParameterExpression(typeof(T), "m");
     // m.status
     Expression body = Expression.Property(parameter, property);
     //m.status == true (which is just m.status)
     body = Expression.IsTrue(body);
     //m => m.status
     var lambdaPredicate = Expression.Lambda<Func<T, bool>>(body, new[]{parameter});
     return All(lambdaPredicate);
   } 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用实体框架过滤子记录

来自分类Dev

实体框架过滤的导航属性

来自分类Dev

使用实体框架过滤数据

来自分类Dev

对象内的实体框架过滤列表

来自分类Dev

带有字符串列表的实体框架过滤

来自分类Dev

使用.Where()的C#实体框架过滤

来自分类Dev

实体框架过滤器“ Expression <Func <T,bool >>”

来自分类Dev

实体框架过滤器嵌套集合

来自分类Dev

从实体框架过滤绑定到ViewSource的DataGrid

来自分类Dev

使用实体框架删除记录

来自分类Dev

使用字符串列表进行实体框架过滤

来自分类Dev

Django Rest框架过滤器

来自分类Dev

Django REST框架过滤视图

来自分类Dev

Django REST框架过滤视图

来自分类Dev

删除最后N条记录,实体框架

来自分类Dev

删除最后N条记录,实体框架

来自分类Dev

如何创建动态实体框架过滤器表达式,例如Expression <Func <T,bool >>

来自分类Dev

Zend框架过滤器输入ENUM

来自分类Dev

MongoDB使用聚合框架过滤深度嵌套的数组

来自分类Dev

相关表上的Django Rest框架过滤器

来自分类Dev

使用Django Rest框架过滤继承了Viewset的每个Viewset

来自分类Dev

实体框架6.1-如何查询软删除的记录?

来自分类Dev

我无法使用实体框架删除或更新多条记录

来自分类Dev

实体框架-更新记录

来自分类Dev

实体框架级联删除

来自分类Dev

实体框架分离与删除

来自分类Dev

实体框架删除问题

来自分类Dev

实体框架未插入记录

来自分类Dev

实体框架中的不同记录