Lyo.PackageMetadata.Postgres
1.0.6
See the version list below for details.
dotnet add package Lyo.PackageMetadata.Postgres --version 1.0.6
NuGet\Install-Package Lyo.PackageMetadata.Postgres -Version 1.0.6
<PackageReference Include="Lyo.PackageMetadata.Postgres" Version="1.0.6" />
<PackageVersion Include="Lyo.PackageMetadata.Postgres" Version="1.0.6" />
<PackageReference Include="Lyo.PackageMetadata.Postgres" />
paket add Lyo.PackageMetadata.Postgres --version 1.0.6
#r "nuget: Lyo.PackageMetadata.Postgres, 1.0.6"
#:package Lyo.PackageMetadata.Postgres@1.0.6
#addin nuget:?package=Lyo.PackageMetadata.Postgres&version=1.0.6
#tool nuget:?package=Lyo.PackageMetadata.Postgres&version=1.0.6
Lyo.PackageMetadata.Postgres
EF Core persistence for Lyo.PackageMetadata.IPackageMetadataStore.
Problem it solves
Stack traces contain stripped namespaces / assembly-qualified tokens. Lyo.PackageMetadata resolves which NuGet or Git package owns a prefix for diagnostics overlays. PostgresPackageMetadataStore implements the store against normalized tables (PackageStackPrefix rows ordered by NormalizedPrefix length) so resolution is O(sorted prefixes) in-process after each DB read. The bulk API loads all prefixes once per call when caching allows.
Storage model (conceptual)
PackageMetadataEntityholds catalog metadata (id, package name, version range, SPDX/license expression blobs). See EF configurations for the rest.PackageStackPrefixEntitymapsNormalizedPrefixto the owning package. Longest prefix wins.
Bulk resolution (TryGetManyForStrippedMethodPrefixesAsync)
- Input: list of distinct stripped prefixes (typically one per decoded stack frame subtree).
- Output: dictionary including one entry per input key, value
nullwhen nothing matches contract rules. - Never silently drop requested keys. That invariant keeps
Lyo.Diagnosticbulk decode paths deterministic.
Prefix catalog caching (PostgresPrefixCatalogCachingMode)
PostgresPackageMetadataOptions.PrefixCatalogCaching controls repeated DB chatter:
| Mode | Meaning |
|---|---|
InvalidateOnRegisterManyOrClear |
Keep an immutable in-process snapshot. Reload when mutations bump the generation counter (ClearPrefixCatalogCache or RegisterManyAsync on the same instance). |
Disabled |
Always hit Postgres. Wrap with an outer cache yourself if importing huge catalogs asynchronously. |
ClearPrefixCatalogCache() is a no-op on the cache when caching is disabled. It only bumps the generation.
Cross-process writes do not invalidate. Disable the snapshot or bust the cache after CLI imports.
DI registration (Extensions)
- AddPackageMetadataDbContextFactory (and
FromConfiguration). BindsPostgresPackageMetadataOptions, registers thePackageMetadataDbContextfactory, attachesAddPostgresMigrationsbootstrap. - AddPostgresPackageMetadataStore. Factory plus
IPackageMetadataStoreasPostgresPackageMetadataStoresingleton resolving options andIDbContextFactory.
Migrations & schema
Migrations ship under Migrations/. Schema and table names follow PostgresPackageMetadataOptions.Schema. Inspect the snapshot for authoritative DDL.
See also
Lyo.Diagnosticstack decode and breadcrumb tooling that optionally consumesIPackageMetadataStore.
Dependencies
Generated from ProjectReference / PackageReference (same model as docs/Lyo.ProjectGraph.html).
Lyo.Exceptions(direct, lyo)Lyo.PackageMetadata(direct, lyo)Lyo.Postgres(direct, lyo)Microsoft.EntityFrameworkCore10.0.5(direct, microsoft)Microsoft.EntityFrameworkCore.Design10.0.5(direct, microsoft)Microsoft.Extensions.Configuration.Binder10.0.5(direct, microsoft)Microsoft.Extensions.Options10.0.5(direct, microsoft)Lyo.Common(transitive, lyo)Lyo.Hashing(transitive, lyo)Microsoft.EntityFrameworkCore.Relational10.0.5(transitive, microsoft)Microsoft.Extensions.DependencyInjection.Abstractions10.0.5(transitive, microsoft)Microsoft.Extensions.Hosting.Abstractions10.0.5(transitive, microsoft)Microsoft.Extensions.Logging.Abstractions10.0.5(transitive, microsoft)Npgsql.EntityFrameworkCore.PostgreSQL10.0.3(transitive, third-party)System.IO.Hashing10.0.5(transitive, microsoft, net10.0)System.Memory4.6.3(transitive, microsoft, netstandard2.0)System.Text.Json10.0.5(transitive, microsoft, netstandard2.0)System.Threading.Tasks.Extensions4.6.3(transitive, microsoft)
| 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
- Lyo.Exceptions (>= 1.0.6)
- Lyo.PackageMetadata (>= 1.0.6)
- Lyo.Postgres (>= 1.0.6)
- Microsoft.EntityFrameworkCore (>= 10.0.5)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.5)
- Microsoft.Extensions.Options (>= 10.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.