LabelLocker.Abstractions 2.0.1

The owner has unlisted this package. This could mean that the package is deprecated, has security vulnerabilities or shouldn't be used anymore.
dotnet add package LabelLocker.Abstractions --version 2.0.1
                    
NuGet\Install-Package LabelLocker.Abstractions -Version 2.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LabelLocker.Abstractions" Version="2.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LabelLocker.Abstractions" Version="2.0.1" />
                    
Directory.Packages.props
<PackageReference Include="LabelLocker.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LabelLocker.Abstractions --version 2.0.1
                    
#r "nuget: LabelLocker.Abstractions, 2.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LabelLocker.Abstractions@2.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LabelLocker.Abstractions&version=2.0.1
                    
Install as a Cake Addin
#tool nuget:?package=LabelLocker.Abstractions&version=2.0.1
                    
Install as a Cake Tool

LabelLocker

LabelLocker is a .NET library designed to manage and ensure the uniqueness of labels or identifiers across different entities in your applications. With built-in support for Entity Framework Core (EFCore) and an abstraction layer for custom repository implementations, LabelLocker is highly adaptable to various data storage strategies. It also implements optimistic concurrency control to manage concurrent operations on labels efficiently.

Key Features

  • Unique Label Management: Safely reserve and release labels to ensure uniqueness across entities.
  • EFCore Integration: Leverage Entity Framework Core for seamless integration with relational databases.
  • Custom Repository Support: Extend LabelLocker with custom repositories to fit any data access strategy.
  • Concurrency Handling: Manage concurrent operations with built-in optimistic concurrency control.
  • Case Insensitivity: Label names are treated case-insensitively, ensuring "LABEL" and "label" are considered the same.

Getting Started

Installation

dotnet add package LabelLocker

Configuration

  1. EFCore Setup: Ensure EFCore is configured in your project to use LabelLocker with your database of choice.
  2. Integrate LabelLocker: Add the LabelEntity to your DbContext:
public DbSet<LabelEntity> Labels { get; set; }
  1. Database Migration: Apply migrations to create the necessary table for label management:
dotnet ef migrations add AddLabelEntities
dotnet ef database update

Usage

Reserve a label:

var reservationResult = await labelService.ReserveLabelAsync("MyUniqueLabel");
if (reservationResult.Success)
{
    var token = reservationResult.ReservationToken;
    // Handle success
}

Release a label:

var releaseResult = await labelService.ReleaseLabelAsync("MyUniqueLabel", token);
if (releaseResult.Success)
{
    // Label released successfully
}

Custom Repository Implementation

Create a custom repository by implementing the ILabelRepository interface if you prefer using a different ORM or data access strategy than EFCore.

public class CustomLabelRepository : ILabelRepository
{
    // Custom implementation
}

Contributing

Contributions are welcome! Feel free to fork the repository, submit pull requests, or report issues.

License

LabelLocker is distributed under the MIT License. See the LICENSE file for more details.

Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated