EntityFramework Core Global Filter Kullanımı

Global filter, ef ile linq sorguları yazarken yazdığımız filtreyi otomatik ekleyen bir özelliktir. Genelllik softdelete gibi durumlarda kullanılsa da birçok ihtiyaca cevap veriyor.

Aşağıdaki entity üzerinden örnek kullanımlarını inceleyeceğiz.

Product.cs

IsDeleted ve Order alanları ISoftDelete ve ISortableEntity interfacelerinden türüyor.

Temel Kullanımı

Product için GlobalFilter Kullanımını HasQueryFilters aracılığıyla yapıyoruz.

Aşağıdaki sorguyu çalıştıralım ve generate edilen sorguya bakalım.

Result:

Gördüğünüz gibi bir koşul eklememize rağmen global olarak eklediğimiz IsDeleted filter eklenmiş oldu.

Önemli Not:

Aynı Entity için birden çok query filter oluşturamazsınız fakat query içinde and ve or operatörleriyle birden çok oluşturabilirsiniz.

İlişkili alanlar için de ekleme yapabilirsiniz.

Sorgu:

var result = dbContext.Products.AsEnumerable();

Sonuç (As Sql)

Burada dikkat etmemiz gerek şey, Include yapmamıza rağmen query filterın bunu uygulaması.

Disable

Bazı sorgularda global filter iptal etme ihtiyacı olabilir bu durumlar için IgnoreQueryFilters operatörünü kullanabiliriz.

Sonuç:

Ortak Kullanılan Alanlar İçin Genel Bir Query Oluşturma

Yukarıdaki örnekte softdelete alanlar için hepsine tek tek yazmamız gerekiyor, bundan kurtarmak için aşağıdaki çözümü kullanabiliriz.

Okuduğunuz için teşekkürler, başka bir gönderide görüşmek üzere 🙂

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.

Turkish