Raycynix.Extensions.Database.Abstractions
1.0.0
dotnet add package Raycynix.Extensions.Database.Abstractions --version 1.0.0
NuGet\Install-Package Raycynix.Extensions.Database.Abstractions -Version 1.0.0
<PackageReference Include="Raycynix.Extensions.Database.Abstractions" Version="1.0.0" />
<PackageVersion Include="Raycynix.Extensions.Database.Abstractions" Version="1.0.0" />
<PackageReference Include="Raycynix.Extensions.Database.Abstractions" />
paket add Raycynix.Extensions.Database.Abstractions --version 1.0.0
#r "nuget: Raycynix.Extensions.Database.Abstractions, 1.0.0"
#:package Raycynix.Extensions.Database.Abstractions@1.0.0
#addin nuget:?package=Raycynix.Extensions.Database.Abstractions&version=1.0.0
#tool nuget:?package=Raycynix.Extensions.Database.Abstractions&version=1.0.0
Raycynix.Extensions.Database.Abstractions
Raycynix.Extensions.Database.Abstractions contains the contracts used by the Raycynix database packages.
What it contains
IDatabaseInitializerIConfiguratorIGenericConfigurator<T>DatabaseTableAttribute
IConfigurator describes both model configuration and the cache key fragment that identifies the model shape produced by that configurator. This allows reusable packages to contribute EF Core mappings without breaking shared model caching.
When a configurator changes the EF Core model shape dynamically, its ModelCacheKey must change as well. Static mappings can keep a stable key, while runtime-dependent mappings should include the runtime discriminator, such as a configured table name.
Purpose
This package exists so database-related contracts can be shared without depending on the full database implementation package.
Example
Reusable packages can define configurators without referencing the runtime registration package:
[DatabaseTable("orders")]
public sealed class OrderConfigurator : IGenericConfigurator<Order>
{
public Type Type => typeof(Order);
public Type[] DependsOn => [];
public string ModelCacheKey => typeof(Order).FullName!;
public void Configure(ModelBuilder modelBuilder)
{
var entity = modelBuilder.Entity<Order>();
entity.ToTable("orders");
entity.HasKey(static current => current.Id);
}
public void Seed(ModelBuilder modelBuilder)
{
}
}
For runtime-dependent mappings, include the runtime value in ModelCacheKey:
public sealed class OrderConfigurator : IGenericConfigurator<Order>
{
private readonly OrdersDatabaseOptions options;
public OrderConfigurator(OrdersDatabaseOptions options)
{
this.options = options;
}
public Type Type => typeof(Order);
public Type[] DependsOn => [];
public string ModelCacheKey => $"{typeof(Order).FullName!}:{options.TableName}";
public void Configure(ModelBuilder modelBuilder)
{
var entity = modelBuilder.Entity<Order>();
entity.ToTable(options.TableName);
entity.HasKey(static current => current.Id);
}
public void Seed(ModelBuilder modelBuilder)
{
}
}
The application can then register the assembly containing that configurator through AddRaycynixDatabase(...).AddAssembly<TMarker>().
| 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
- Microsoft.EntityFrameworkCore (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection (>= 10.0.5)
- Microsoft.Extensions.Logging (>= 10.0.5)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Raycynix.Extensions.Database.Abstractions:
| Package | Downloads |
|---|---|
|
Raycynix.Extensions.Database
Core shared database registration, DatabaseContext infrastructure, model assembly discovery, explicit provider-package composition, and provider-agnostic EF Core model caching for Raycynix applications. |
GitHub repositories
This package is not used by any popular GitHub repositories.
See the repository changelog and release history for package-specific changes and breaking updates.