Architect.Identities
1.0.0
Reliable unique ID generation for distributed applications.
This package provides highly tuned tools for ID generation and management.
Auto-increment IDs reveal sensitive information. UUIDs (also known as GUIDs) are inefficient as primary keys in a database. Having two different IDs is cumbersome and counterintuitive. We can do better.
- For a 93-bit UUID replacement that is efficient as a primary key and has virtually no caveats, use the DistributedId.
- For a 64-bit UUID replacement that is extremely efficient as a primary key, use the Fluid.
- To expose IDs externally in a sensitive environment where zero metadata must be leaked, transform them with PublicIdentities.
- To assign a unique ID to each distinct application or instance thereof, use an ApplicationInstanceIdSource.
https://github.com/TheArchitectDev/Architect.Identities
Install-Package Architect.Identities -Version 1.0.0
dotnet add package Architect.Identities --version 1.0.0
<PackageReference Include="Architect.Identities" Version="1.0.0" />
paket add Architect.Identities --version 1.0.0
#r "nuget: Architect.Identities, 1.0.0"
// Install Architect.Identities as a Cake Addin
#addin nuget:?package=Architect.Identities&version=1.0.0
// Install Architect.Identities as a Cake Tool
#tool nuget:?package=Architect.Identities&version=1.0.0
Dependencies
-
.NETCoreApp 3.1
- Architect.AmbientContexts (>= 1.0.0)
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.0)
- Microsoft.Extensions.Hosting.Abstractions (>= 3.1.0)
Used By
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Architect.Identities:
Package | Downloads |
---|---|
Architect.Identities.Azure
Azure-based implementations for the Architect.Identities package.
This package allows Azure blob storage to be used as the synchronization mechanism for assigning unique IDs to each application instance.
services.AddIdGenerator(generator => generator.UseAzureBlobStorageContainer(new BlobContainerClient("ConnectionString", "ContainerName")));
|
|
Architect.Identities.EntityFramework
EntityFramework extensions for the Architect.Identities package.
Use DbContext-based connections for the Fluid ID generator:
public void ConfigureServices(IServiceCollection services)
{
services.AddPooledDbContextFactory<ExampleDbContext>(context => context.UseSqlServer("ConnectionString"));
services.AddApplicationInstanceIdSource(source => source.UseSqlServerDbContext<ExampleDbContext>());
services.AddIdGenerator(generator => generator.UseFluid());
}
Easily configure the column type to use for decimal ID columns:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>(entity =>
{
entity.Property(o => o.Id)
.ValueGeneratedNever();
entity.HasKey(o => o.Id);
});
// Other entities ...
// For all mapped decimal columns named *Id or *ID
modelBuilder.StoreDecimalIdsWithCorrectPrecision(dbContext: this);
}
Or per individual property:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>(entity =>
{
entity.Property(e => e.Id)
.ValueGeneratedNever()
.StoreWithDecimalIdPrecision(dbContext: this);
});
}
The extensions in this package special-case SQLite, which requires special treatment.
|
GitHub repositories
This package is not used by any popular GitHub repositories.
Version History
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 300 | 12/31/2020 |