Skip to main content
BuildingBlocks.Specification, Ardalis.Specification 9.x üzerine kurulu ince bir katmandır. Sorgu mantığını (where/include/orderby/paging) repository’den ayrı, test edilebilir ve cache’lenebilir spec sınıflarına taşır. İki ek değer sunar: in-memory mantıksal kombinatörler (And/Or/Not) ve spec’e doğrudan cache tag/TTL iliştirme.
Repository altyapısı (EFRepository, CachedRepository, ListAsync) ve hibrit cache davranışı için bkz. Veri Katmanı ve Cache.

CompositeSpecification<T>

Spec’lerin türetildiği temel sınıf. Ardalis.Specification.Specification<T>’i genişletir ve in-memory değerlendirme için IInMemorySpecification<T> sağlar.
Query.* zinciri (Where, Include, OrderBy, Skip, Take) Ardalis’ten gelir ve EF Core’a çevrilir; IsSatisfiedBy ise aynı kuralı bellekte de uygulanabilir kılar.

Filtreler — IFilter / FilterBase

API’den gelen liste/arama parametrelerini standartlaştıran kontrat. FilterBase türetilerek aggregate’e özel filtre yapılır.
Sayfalama 0-based’tir: IsPagingEnabled koşulu Page >= 0 ister ve PaginationHelper 0’ıncı sayfayı ilk sayfa kabul eder. Frontend useState(0) ile başlamalı; page=1 göndermek ilk sayfayı sessizce atlar.

Cache entegrasyonu

Cache, Ardalis’in mevcut Query.EnableCache(name, args) zinciriyle açılır. Paket buna iki fluent uzantı ekler:
Ad bilerek WithCacheTtl’dir — Ardalis’in WithTimeToLive’i ile ambiguous reference olmasın diye. Aynı şekilde paralel ICacheSpecificationBuilder<T> kaldırılmıştır; Ardalis.Specification.ICacheSpecificationBuilder<T> kullanılır.

Kullanım — spec tanımı + Repository.ListAsync

İlgili

Veri katmanı

EFRepository, CachedRepository ve SpecificationEvaluator.

Cache

EnableCache/WithTags ile hibrit cache entegrasyonu.

Domain

Spec’lerin aggregate başına organizasyonu.

Invalidation

Tag-based eviction ve domain event tetikleme.