Aida-Hagh / EF-Core

Learn EF Core
1 stars 0 forks source link

Global Query Filters with Example1 #21

Open Aida-Hagh opened 4 months ago

Aida-Hagh commented 4 months ago

با استفاده از آن میتوانیم فیلترهایی را به صورت سراسری بر روی تمام کوئری‌های یک شیء اعمال کنیم.برای مواردی مانند پیاده‌سازی soft delete (حذف نرم)، چند مستاجره (multi-tenancy) و یا فیلترهای امنیتی کاربردی است.

مثال 1: پیاده‌سازی Soft Delete فرض کنید یک شیء به نام Employee داریم که شامل یک فیلد IsDeleted است که نشان‌دهنده وضعیت حذف نرم است.

public class Employee {

public int Id { get; set; }
public string Name { get; set; }
public bool IsDeleted { get; set; }

}

public class MyDbContext : DbContext {

public DbSet<Employee> Employees { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    // تعریف فیلتر سراسری برای حذف نرم
    modelBuilder.Entity<Employee>().HasQueryFilter(e => !e.IsDeleted);
}

}

با این تعریف، هر کوئری که به Employees ارسال شود به صورت خودکار فقط رکوردهایی را که IsDeleted برابر با false دارند، برمی‌گرداند.