Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅用于GET方法的全局查询筛选器_C#_Entity Framework - Fatal编程技术网

C# 仅用于GET方法的全局查询筛选器

C# 仅用于GET方法的全局查询筛选器,c#,entity-framework,C#,Entity Framework,我有一张桌子: [Table("Employee")] public class Employee { [Key] public int Id { get; set; } public string Name { get; set; } public bool IsDeleted { get; set; } } 我添加了软删除属性“IsDeleted”。为此,我添加了

我有一张桌子:

    [Table("Employee")]  
    public class Employee  
    {  
        [Key]  
        public int Id { get; set; }  
        public string Name { get; set; }  
        public bool IsDeleted { get; set; }  
    }  
我添加了软删除属性“IsDeleted”。为此,我添加了过滤器,这样当我收到所有员工的请求时,软删除的数据不会显示出来。到目前为止,它工作正常,我得到了所有未“IsDeleted”的用户列表,我可以请求删除一名员工,然后发出get请求,被删除的用户不在接收列表中。以下是过滤器:

protected override void OnModelCreating(ModelBuilder modelBuilder)  
{  
    modelBuilder.Entity<Employee>()  
        .HasQueryFilter(p => !p.IsDeleted);  

    base.OnModelCreating(modelBuilder);  
}  
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{  
modelBuilder.Entity()
.HasQueryFilter(p=>!p.IsDeleted);
基于模型创建(modelBuilder);
}  

现在主要的问题是-如何使这个过滤器只在GET请求下工作?因为目前,我只能将“isDeleted”=设置为true,但无法恢复employee(将“isDeleted”更改为“false”)。无法对软删除的员工执行任何操作。

如果要使用具有查询筛选器的
DbSet
,但需要访问已筛选的对象,可以使用该方法,例如:

var deletedUsers = context.Employees
    .IgnoreQueryFilters()
    .Where(e => e.IsDeleted);

只需对“写入”场景使用
IgnoreQueryFilters()
。。。