ASP.NET Extensions to make it easy to create and use COMB (timestamped sequential) GUID variants for Microsoft SQL Server and PostgreSQL. See the GitHub site for more details.
$ dotnet add package RT.Comb.AspNetCoreThis package is a wrapper to make it easy to use RT.Comb in ASP.NET Core applications.
Install the package in the ASP.NET Core application:
dotnet add package RT.Comb.AspNetCore
Then simply choose one of the extensions and add it inside ConfigureServices (Startup.cs) like:
services.AddSqlCombGuidWithSqlDateTime();
The main package RT.Comb offers two implementations of ICombProvider: SqlCombProvider and PostgreSqlCombProvider. This package offers extensions to configure both providers, with either the SqlDateTimeStrategy or UnixDateTimeStrategy.
services.AddSqlCombGuidWithSqlDateTime:
Registers a SqlCombProvider using the SqlDateTimeStrategy and the default Timestamp and Guid strategies (DateTime.Utc and Guid.NewGuid())
services.AddSqlCombGuidWithUnixDateTime:
Registers a SqlCombProvider using the UnixDateTimeStrategy and the default Timestamp and Guid strategies (DateTime.Utc and Guid.NewGuid())
services.AddPostgreSqlCombGuidWithSqlDateTime:
Registers a PostgreSqlCombProvider using the SqlDateTimeStrategy and the default Timestamp and Guid strategies (DateTime.Utc and Guid.NewGuid())
services.AddPostgreSqlCombGuidWithUnixDateTime:
Registers a PostgreSqlCombProvider using the UnixDateTimeStrategy and the default Timestamp and Guid strategies (DateTime.Utc and Guid.NewGuid())
All extensions methods above register the ICombProvider with the defaults Timestamp and Guid providers, but those can be customized by providing values to the optional parameters:
// Defined somewhere in your app..
public class CustomGuidProvider {
// some custom logic here..
public Guid GetGuid() => Guid.NewGuid();
}
public class CustomTimestampProvider {
// always create with +2 seconds.. (example custom logic)
public DateTime GetTimestamp() => DateTime.UtcNow.AddSeconds(2);
}
// In ConfigureServices:
// create the custom providers
var myGuidProvider = new CustomGuidProvider();
var myTimestampProvider = new CustomTimestampProvider();
// Add the ICombProvider with the custom providers
services.AddPostgreSqlCombGuidWithSqlDateTime(
myTimestampProvider.GetTimestamp, myGuidProvider.GetGuid);
The RT.Comb library comes already with a handy timestamp provider: UtcNoRepeatTimestampProvider (Click to read more about it)