KamiSama.Modules.Ticketing.Core 10.0.14

dotnet add package KamiSama.Modules.Ticketing.Core --version 10.0.14
                    
NuGet\Install-Package KamiSama.Modules.Ticketing.Core -Version 10.0.14
                    
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="KamiSama.Modules.Ticketing.Core" Version="10.0.14" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="KamiSama.Modules.Ticketing.Core" Version="10.0.14" />
                    
Directory.Packages.props
<PackageReference Include="KamiSama.Modules.Ticketing.Core" />
                    
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 KamiSama.Modules.Ticketing.Core --version 10.0.14
                    
#r "nuget: KamiSama.Modules.Ticketing.Core, 10.0.14"
                    
#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 KamiSama.Modules.Ticketing.Core@10.0.14
                    
#: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=KamiSama.Modules.Ticketing.Core&version=10.0.14
                    
Install as a Cake Addin
#tool nuget:?package=KamiSama.Modules.Ticketing.Core&version=10.0.14
                    
Install as a Cake Tool

KamiSama.Modules.Ticketing.Core

Back to package index

Version: 10.0.0

Description

ASP.NET Core Ticketing implementation with EF Core entities, validated ticket workflows, repositories, scoped features, modular registration, and startup database initialization. Install it with at least the selected PostgreSQL or SQLite provider and review the documented registration and authorization limitations before exposing its features.

How to use

dotnet add package KamiSama.Modules.Ticketing.Core --version 10.0.0

Publication mismatch: 10.0.0 in the required install command is the current workspace/root documentation version. NuGet exposed 10.0.11 as the latest package when this surface was reviewed; 10.0.0 itself was not available.

Install Core plus at least the selected provider package. Configure one provider key and connection string, pass the matching provider callback, and finish through BuildAsync before resolving Ticketing features:

{
  "Ticketing": {
    "initialization": {
      "migrate": true,
      "initialize": false,
      "test-data": false
    },
    "database": {
      "provider": "postgresql",
      "connection-string": "Host=localhost;Database=ticketing;Username=app;Password=..."
    }
  }
}
using KamiSama.Modules;
using KamiSama.Modules.Ticketing;

var webBuilder = WebApplication.CreateBuilder(args);
IConfigurationSection ticketing = webBuilder.Configuration.GetSection("Ticketing");

ExtendedWebApplicationBuilder builder = webBuilder.Extend()
    .AddTicketingModule(
        ticketing,
        ticketing.GetSection("database"),
        database => database.AddPostgresqlTicketingDbContext());

WebApplication app = await builder.BuildAsync(CancellationToken.None);

AddTicketingModule only queues work. During BuildAsync, ConfigureServices binds named ConnectionStringOption and DataInitializationOptions, scans the Core assembly for attributed scoped services, creates IMultiProviderDbContextBuilder<TicketingDbContext>, selects __EFMigrationsHistory_Ticketing, and invokes the provider callback. The callback may register both installed providers, but the lowercased configured key selects one base-context alias. Although nullable in the signature, the callback is required in a normal host unless an equivalent keyed context registration already exists.

After the application is built, Ticketing creates a scope, resolves IDatabaseInitializer<TicketingDbContext> or a migration-only default initializer, reads the named initialization options, and runs selected stages. The default initializer migrates when migrate is true; initialize and test-data do no work unless the host registers a custom initializer. Startup therefore needs database connectivity, schema privileges, and compatible provider migrations. Core maps no controllers, endpoints, middleware, authentication, or authorization.

Registration limitation: DeleteTicketCategory, ListTicketCategories, and ExistsTicketCategoryByName carry scoped auto-registration attributes for specialized contracts they do not implement. These descriptors cannot create the requested service. Service-provider validation can therefore fail during BuildAsync; without validation, resolving IDeleteTicketCategory, IListTicketCategories, or IExistsTicketCategoryByName fails. The other attributed features and both repositories are assignable registrations.

Query and mutation limitations: ticket search applies text across title/comments, status, priority, and ticket-or-comment author filters but ignores TicketCategoryId. It recognizes priority, status, and updatedat; every other token orders by priority then update time. Category name lookup/filtering lowercases both operands, category names have no unique database index, and duplicate checks are separate read-before-write operations. Repository mutations save immediately with no cross-operation transaction supplied by these features.

UpdateTicketComment.UpdateAsync ignores its method key and targets request.CommentId. Comment and attachment additions trust caller-supplied author identifiers, and comment addition also trusts the requested user/operator side. Comment update and attachment addition compare only author identifiers; attachment removal and ticket-state update perform no ownership check. Ticket-state updates permit unchanged status, open or reopened to resolved, and resolved to reopened or closed; invalid transitions throw ConflictException. Other mutation features do not consistently call Ticket.IsEditable. Add authenticated endpoint authorization, ownership and side checks, and identifier-consistency validation before exposing these services.

Entities store external attachment content IDs only. Provider migrations create required category-to-ticket, ticket-to-comment, and comment-to-attachment relationships with cascading deletes, non-unique relationship indexes, 50/100/400 character limits, and integer enums. Provider registration enables lazy-loading proxies; list and lookup queries are tracked, so complete DTO mapping depends on navigations being available. No controllers exist in this package.

Namespaces

Types

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on KamiSama.Modules.Ticketing.Core:

Package Downloads
KamiSama.Modules.Ticketing.Sqlite

SQLite EF Core context, provider registration, and migrations for KamiSama.Modules.Ticketing.Core.

KamiSama.Modules.Ticketing.Postgresql

PostgreSQL EF Core context, provider registration, and migrations for KamiSama.Modules.Ticketing.Core.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.14 45 11/8/2026
10.0.13.1 112 10/22/2026
10.0.13 111 10/22/2026
10.0.11.9 156 8/24/2026
10.0.11.8 154 8/22/2026
10.0.11.7 145 8/21/2026
10.0.11.6 146 8/19/2026
10.0.11.5 148 8/18/2026
10.0.11.4 146 8/18/2026
10.0.11.3 141 8/18/2026
10.0.11.2 163 8/18/2026
10.0.11.1 154 8/15/2026
10.0.11 151 8/11/2026
10.0.10.2 149 8/4/2026