EntityAxis.KeyMappers
1.0.0
dotnet add package EntityAxis.KeyMappers --version 1.0.0
NuGet\Install-Package EntityAxis.KeyMappers -Version 1.0.0
<PackageReference Include="EntityAxis.KeyMappers" Version="1.0.0" />
<PackageVersion Include="EntityAxis.KeyMappers" Version="1.0.0" />
<PackageReference Include="EntityAxis.KeyMappers" />
paket add EntityAxis.KeyMappers --version 1.0.0
#r "nuget: EntityAxis.KeyMappers, 1.0.0"
#:package EntityAxis.KeyMappers@1.0.0
#addin nuget:?package=EntityAxis.KeyMappers&version=1.0.0
#tool nuget:?package=EntityAxis.KeyMappers&version=1.0.0
EntityAxis.KeyMappers
EntityAxis.KeyMappers provides key mapping implementations for EntityAxis, allowing seamless conversion between application and database key types.
✨ Features
- Generic key mappers for common scenarios:
IdentityKeyMapper<T>
for when key types are the sameStringToGuidKeyMapper
for string-to-Guid conversionStringToIntKeyMapper
for string-to-integer conversion
- Easy to extend with custom key mappers
- Stateless implementations for optimal performance
📦 Installation
dotnet add package EntityAxis.KeyMappers
🧱 Available Key Mappers
IdentityKeyMapper<T>
A default implementation for when the application and database key types are the same. This mapper performs no conversion and simply returns the input key.
// Register in DI container
services.AddSingleton<IKeyMapper<int, int>, IdentityKeyMapper<int>>();
StringToGuidKeyMapper
Converts between string keys in the application layer and GUID keys in the database.
// Register in DI container
services.AddSingleton<IKeyMapper<string, Guid>, StringToGuidKeyMapper>();
StringToIntKeyMapper
Converts between string keys in the application layer and integer keys in the database.
// Register in DI container
services.AddSingleton<IKeyMapper<string, int>, StringToIntKeyMapper>();
🧪 Creating Custom Key Mappers
You can create custom key mappers by implementing the IKeyMapper<TAppKey, TDbKey>
interface:
public class CustomKeyMapper : IKeyMapper<string, long>
{
public long ToDbKey(string appKey) => long.Parse(appKey);
public string ToAppKey(long dbKey) => dbKey.ToString();
}
🧠 Best Practices
- Register key mappers as singletons since they are stateless
- Ensure your key mappers handle edge cases (null values, invalid formats, etc.)
- Consider adding validation in your key mappers to catch conversion issues early
- Use the
IdentityKeyMapper
when your application and database key types are the same
🔗 Related Packages
- EntityAxis.Abstractions: Defines common CRUD contracts (IGetById, ICreate, etc.) and domain-friendly interfaces for clean application layers.
- EntityAxis.EntityFramework: Drop-in base classes for EF Core integration
- EntityAxis.MediatR: Generic MediatR handlers for Create/Read/Update/Delete
- EntityAxis.Registration: Offers
IServiceCollection
extension methods to register handlers, validators, and mapping configuration easily in your DI container.
📜 License
This project is licensed under the MIT License.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on EntityAxis.KeyMappers:
Package | Downloads |
---|---|
EntityAxis.EntityFramework
Provides a generic and extensible implementation of ICommandService and IQueryService using Entity Framework Core. Enables clean, testable data access logic with support for domain–to–database entity separation and AutoMapper integration. |
GitHub repositories
This package is not used by any popular GitHub repositories.