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.

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" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Architect.Identities --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Architect.Identities, 1.0.0"
#r directive can be used in F# Interactive, C# scripting and .NET Interactive. Copy this into the interactive tool or source code of the script to reference the package.
// 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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on Architect.Identities:

Package Downloads
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")));
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