Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy
1.1.0
dotnet add package Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy --version 1.1.0
NuGet\Install-Package Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy -Version 1.1.0
<PackageReference Include="Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy" Version="1.1.0" />
<PackageVersion Include="Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy" Version="1.1.0" />
<PackageReference Include="Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy" />
paket add Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy --version 1.1.0
#r "nuget: Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy, 1.1.0"
#:package Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy@1.1.0
#addin nuget:?package=Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy&version=1.1.0
#tool nuget:?package=Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy&version=1.1.0
Mecesoft.Data.EntityFrameworkCore.PostgreSql.Tenancy
Mecesoft.Data 1.1.0 ile standart
DbContext,IdentityDbContextveMecesoft.Repositoryuyumluluk katmanı desteklenir. Bu paket yalnızca row-per-tenant production collation/relationship doğrulaması için gereklidir; tenant kullanmayan veya DB-per-tenant uygulamalar bu pakete ihtiyaç duymaz.
Opsiyonel PostgreSQL production tenant collation doğrulama paketi.
Kapsam
Bu paket yalnızca PostgreSQL'e özgü ITenantCollationVerifier implementasyonunu sağlar. Ana
Mecesoft.Data.EntityFrameworkCore paketi provider-neutral kalır.
Kullanım
optionsBuilder
.UseNpgsql(connectionString)
.UseMecesoftPostgreSqlTenancy();
Tek API trusted production verifier'ı kurar. String tenant mapping varken bu yapılandırma eksikse model/startup doğrulaması fail-closed olur.
Doğrulama kuralları
- Tenant property gerçek EF table/column mapping metadata'sından çözülür. Tenant property
ITenantEntity<T>.TenantIdcontract property'si olmalıdır. - Custom schema, quoted identifier ve
HasColumnNamedesteklenir. - Explicit schema yoksa
search_pathüzerinden gerçek görünür şema çözülür; hardcodedpublicfallback'i güvenlik kanıtı olarak kullanılmaz. Şema çözülemez veya belirsizse fail-closed olur. - Custom string mapping'ler
ITenantExactMappingmarker'ını taşımalıdır; taşımıyorsa fail-closed olur. - Marker tek başına güvenlik kanıtı değildir: core, custom
BuildFilter'ın doğrudan tenant property eşitliği içerdiğini ve mapping metadata'sının model oluşturulmadan önce snapshot alındığını doğrular.entity => true, başka property veya ek predicate kullanan filter'lar model oluşturma aşamasında reddedilir. - Yalnızca regular veya partitioned table (
pg_class.relkindr/p) kabul edilir. - Yalnızca
text/varcharkabul edilir. pg_attribute.atttypmoddoğrulanır:text, limitsizvarcharveya en az 128 karakterlikvarchar(n)kabul edilir; daha küçük kapasiteli kolonlar fail-closed reddedilir.citext,bpchar, domain ve diğer custom type'lar reddedilir.- Generated/computed tenant column reddedilir.
- View, materialized view, foreign table reddedilir.
- Yalnızca
pg_collation.collisdeterministic = truekabul edilir. - Non-deterministic ICU collation reddedilir.
- Model foreign key delete action'ları
pg_constraint/pg_class/pg_namespaceile schema-qualified olarak karşılaştırılır. Modelde bulunmayan veya modelle uyuşmayanON DELETE CASCADE/SET NULL/SET DEFAULTfail-closed reddedilir. Eksik/ambiguous metadata doğrulamayı durdurur. - Catalog sorgusu parametreledir; identifier interpolation kullanılmaz.
PostgreSQL deterministic collation'larda eşitlik byte-wise'dır ve trailing space'ler anlamlıdır; SQL Server'daki exactness augmenter'ı PostgreSQL'e uygulanmaz.
Startup
using var scope = services.CreateScope();
var context = scope.ServiceProvider.GetRequiredService<AppDbContext>();
context.ValidateTenantSecurity();
String tenant kullanılıyorsa schema hazır olduktan sonra çağrılmalıdır.
Kapsam dışı
xminconcurrency token desteği değiştirilmez; mevcut fail-closed davranışı korunur.- Raw SQL, bulk ve
IgnoreQueryFiltersnamed tenant filter'ı atlar. - Paket mevcut veriyi taramaz veya normalize etmez.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Mecesoft.Data.EntityFrameworkCore (>= 1.1.0)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
1.1.0: restores Mecesoft.Repository compatibility, standard/Identity DbContext support, general-purpose unit of work, detached concurrency helpers, and optional soft-delete/audit services.