Duna.Libs.Core
1.0.8
dotnet add package Duna.Libs.Core --version 1.0.8
NuGet\Install-Package Duna.Libs.Core -Version 1.0.8
<PackageReference Include="Duna.Libs.Core" Version="1.0.8" />
<PackageVersion Include="Duna.Libs.Core" Version="1.0.8" />
<PackageReference Include="Duna.Libs.Core" />
paket add Duna.Libs.Core --version 1.0.8
#r "nuget: Duna.Libs.Core, 1.0.8"
#:package Duna.Libs.Core@1.0.8
#addin nuget:?package=Duna.Libs.Core&version=1.0.8
#tool nuget:?package=Duna.Libs.Core&version=1.0.8
Duna.Libs.Core
Core library for Dunasoft applications. Provides foundational abstractions and utilities for building data-driven services: generic CRUD, event bus, multi-database support, flexible ID generation, sorting, mapping, security, and more.
Note: All functionality previously in
Duna.Libs.Utilshas been merged into this library. If you were referencingDuna.Libs.Utils, you can replace it withDuna.Libs.Coreand update namespaces as follows:
Old namespace New namespace Duna.Libs.Utils.AuxfDuna.Libs.Core.AuxfDuna.Libs.Utils.SecurityDuna.Libs.Core.SecurityDuna.Libs.Utils.GraphicsDuna.Libs.Core.GraphicsDuna.Libs.Utils.TreeDuna.Libs.Core.TreeDuna.Libs.Utils.ExceptionsDuna.Libs.Core.Exceptions
Table of Contents
- License
- Installation
- Package Structure
- Interfaces
- Services
- ID Providers
- Database
- EventBus
- Sorting
- Mapping
- Utilities
- Security
- Auxf (Auxiliary Utilities)
- Graphics
- Exceptions
- Type Reference
- License
License
Free for non-commercial, educational, and learning use.
Small Business License — up to 3 people in the organization AND up to 100 users:
$100 / year
Enterprise License — more than 3 people OR more than 100 users:
10% of gross revenue of all products built using this library, billed quarterly.
Copyright © 2021-present Soroush Dehbidi Asadzadeh / LOCBEEZ. All Rights Reserved.
Contact: info@soroushasadzadeh.com
Installation
dotnet add package Duna.Libs.Core
Package Structure
Duna.Libs.Core
├── Interfaces/ Core abstractions (IEntity, ICrudService, IMapper, IIdProvider, …)
├── Services/ CRUD, authorized, tree service implementations
├── IdProviders/ ID generation strategies (Guid, Long, Snowflake, Hybrid, …)
├── EventBus/ DB-backed outbox event bus (RabbitMQ)
├── Sort/ Serializable sort expression + IQueryable extension
├── Security/ Permission encoding/decoding, cryptography, captcha
├── Auxf/ Auxiliary helpers (Copier, EnumExtensions, ChecksumGenerator)
├── Graphics/ Image generation and bitmap manipulation
├── Tree/ Hierarchy helpers for tree-structured data
├── Enums/ DatabaseProvider, AccessLevel, …
├── Exceptions/ ExceptionBase, ErrorCode
└── (root) DatabaseExtensions, SchemaHelper, SqlTypeHelper, Coder, Converter, …
Interfaces
IEntity
Duna.Libs.Core.Interfaces.IEntity<T>
The root marker interface for all domain entities. Requires a single Id property.
public interface IEntity<T>
{
T Id { get; set; }
}
Every entity, DTO, and service type in this library is constrained to IEntity<TId>.
ICrudService
Duna.Libs.Core.Interfaces.ICrudService<TDto, TId>
Full async CRUD contract. Use this interface for dependency injection instead of the concrete CrudService.
Task<TDto> AddAsync(TDto input, CancellationToken token = default);
Task<IEnumerable<TDto>> AddListAsync(IEnumerable<TDto> input, CancellationToken token = default);
Task<TDto> UpdateAsync(TDto input, CancellationToken token = default);
Task<IEnumerable<TDto>> UpdateListAsync(IEnumerable<TDto> input, CancellationToken token = default);
Task RemoveAsync(TId input, CancellationToken token = default);
Task RemoveListAsync(IEnumerable<TId> input, CancellationToken token = default);
Task<TDto> GetAsync(TId id, CancellationToken token = default);
Task<List<TDto>> GetListAsync(string sortExpression, int startIndex, int size, CancellationToken token = default);
Task<List<TDto>> GetAllAsync(CancellationToken token = default);
Task<int> CountAsync(CancellationToken token = default);
Task<long> LongCountAsync(CancellationToken token = default);
IAuthorizedService
Duna.Libs.Core.Interfaces.IAuthorizedService<TDto, TId>
Extends CRUD with ownership/access checks before write operations.
Task<bool> HasWriteAccessAsync(TId id, CancellationToken token = default);
Task<bool> HasWriteAccessAsync(IEnumerable<TId> idList, CancellationToken token = default);
Task<TDto> AuthorizedUpdateAsync(TDto input, CancellationToken token = default);
Task AuthorizedRemoveAsync(TId id, CancellationToken token = default);
IMapper
Duna.Libs.Core.Interfaces.IMapper<TInterface, TId>
Duna.Libs.Core.Interfaces.IMapper<TEntitySourceBase, TEntityTargetBase, TId>
Two mapper shapes:
- Single-type mapper — maps within one entity hierarchy (entity ↔ DTO sharing the same interface).
- Dual-type mapper — maps between two independent entity hierarchies (e.g. read model ↔ write model).
// Single-type
TInterface Map(TInterface source, TInterface target);
TEntity Map<TEntity>(TInterface input, TEntity existing = null);
IEnumerable<TEntity> Map<TEntity>(IEnumerable<TInterface> list);
// Dual-type
TEntityTargetBase MapToTarget(TEntitySourceBase source, TEntityTargetBase existing);
TEntitySourceBase MapToSource(TEntityTargetBase source, TEntitySourceBase existing);
// …plus generic and list overloads
IIdProvider
Duna.Libs.Core.Interfaces.IIdProvider<TEntity, TId>
Abstracts ID assignment so you can swap strategies without changing service code.
bool Enable { get; }
Task<TId> GetLatestIdAsync(CancellationToken token = default);
Task<TId> GetNewIdAsync(TId latestId = default, CancellationToken token = default);
Task<IEnumerable<TId>> GetNewIdsAsync(int count, TId latestId = default, CancellationToken token = default);
Task<TEntity> CreateAsync(TId latestId = default, CancellationToken token = default);
Task<IEnumerable<TEntity>> CreateAsync(int count, TId latestId = default, CancellationToken token = default);
Task<TEntity> SetIdAsync(TEntity entity, TId latestId = default, CancellationToken token = default);
Task<IEnumerable<TEntity>> SetIdAsync(IEnumerable<TEntity> entities, TId latestId = default, CancellationToken token = default);
When Enable returns false (e.g. the column has a database identity), the provider is a no-op.
IContextProvider
Duna.Libs.Core.Services.IContextProvider<TDbContext>
Abstracts read/write context splitting for load-balancing scenarios.
TDbContext Context { get; } // alias for WriteContext
TDbContext ReadContext { get; }
TDbContext WriteContext { get; }
Use ContextProvider<TDbContext> (single context) or supply separate read/write contexts for read replicas.
ICurrentUser / ICurrentUserDataProvider
Duna.Libs.Core.Interfaces.ICurrentUser<TId> — marker; extends IEntity<TId>.
Duna.Libs.Core.Interfaces.ICurrentUserDataProvider — implement to expose the authenticated user to authorized services.
IWorker
Duna.Libs.Core.Interfaces.IWorker
Exposes a node Index used by distributed ID generators (Snowflake, Hybrid).
public interface IWorker { int Index { get; } }
Register one implementation per process/node to guarantee ID uniqueness across a cluster.
ILongTree / IStringTree
Duna.Libs.Core.Interfaces.ILongTree / IStringTree
Marker interfaces for hierarchical entities. Implemented by tree CRUD services. Extension methods on these are available in ITreeExtensions.
Services
CrudService
Duna.Libs.Core.Services.CrudService<TDbContext, TEntity, TDto, TInterface, TId>
Concrete implementation of ICrudService. Wire up via DI:
// DI registration
services.AddScoped<ICrudService<ProductDto, int>,
CrudService<AppDbContext, Product, ProductDto, IProduct, int>>();
Requires:
IContextProvider<TDbContext>— context accessIMapper<TInterface, TId>— DTO ↔ entity mappingIIdProvider<TEntity, TId>— ID assignment
AuthorizedServiceBase
Duna.Libs.Core.Services.AuthorizedServiceBase<TDbContext, TEntity, TDto, TInterface, TId, TCurrentUser, TCurrentUserId>
Extends CrudService and implements IAuthorizedService. Override HasWriteAccessAsync to define ownership rules. All write operations call the access check before executing.
LongTreeCrudService / StringTreeCrudService
Duna.Libs.Core.Services.LongTreeCrudService<…> / StringTreeCrudService<…>
Hierarchical CRUD for tree-structured entities with long or string IDs. Provides path-aware operations (ancestors, descendants, move subtree).
ID Providers
All concrete providers extend IdProviderBase and implement IIdProvider<TEntity, TId>.
When the EF model detects a database-generated identity column, Enable is automatically set to false and the provider becomes a no-op.
IdProviderBase
Duna.Libs.Core.IdProviders.IdProviderBase<TDbContext, TEntity, TId>
Abstract base. Handles Enable/HasIdentity detection and delegates to GetNewIdAsync.
GuidIdProvider
Duna.Libs.Core.IdProviders.GuidIdProvider<TDbContext, TEntity>
Generates Guid.NewGuid() IDs. No database round-trips.
services.AddScoped<IIdProvider<Order, Guid>, GuidIdProvider<AppDbContext, Order>>();
LongIdProvider / Int32IdProvider / NumericIdProvider
Duna.Libs.Core.IdProviders.LongIdProvider<TDbContext, TEntity>
Duna.Libs.Core.IdProviders.Int32IdProvider<TDbContext, TEntity>
Duna.Libs.Core.IdProviders.NumericIdProvider<TDbContext, TEntity, TId>
Sequential providers. Read the current max ID from the database and increment. Use LongIdGenerator internally for high-throughput batches.
SnowflakeIdProvider
Duna.Libs.Core.IdProviders.SnowflakeIdProvider<TDbContext, TEntity>
Generates distributed long IDs using the Twitter Snowflake algorithm. Requires an IWorker to supply the node index.
services.AddSingleton<IWorker>(new WorkerNode(index: 1));
services.AddScoped<IIdProvider<Order, long>, SnowflakeIdProvider<AppDbContext, Order>>();
IDs encode timestamp + node + sequence — sortable and globally unique without coordination.
HybridNodeIdProvider
Duna.Libs.Core.IdProviders.HybridNodeIdProvider<TDbContext, TEntity>
Combines a database sequence lookup with node-local generation for scenarios requiring strict ordering within a node.
DisabledIdProvider
Duna.Libs.Core.IdProviders.DisabledIdProvider<TDbContext, TEntity, TId>
Always returns default(TId) and sets Enable = false. Use when the database generates IDs (IDENTITY / SERIAL / AUTO_INCREMENT).
UniqueIdGenerator / LongIdGenerator / SnowflakeIdGenerator
Low-level stateless generators used internally by the providers.
| Type | Output | Algorithm |
|---|---|---|
UniqueIdGenerator |
long, ulong, Guid, string |
Epoch-based with configurable fields |
LongIdGenerator |
long |
Sequential with in-memory batching |
SnowflakeIdGenerator |
long |
Timestamp (41 bit) + node (10 bit) + seq (12 bit) |
Extension methods StringTreeIdExtensions and LongTreeIdExtensions bridge these generators to tree path operations.
Database
DatabaseProvider (enum)
Duna.Libs.Core.Enums.DatabaseProvider
| Value | Provider |
|---|---|
MsSql (0) |
Microsoft SQL Server (default) |
PostgreSql (1) |
PostgreSQL via Npgsql |
MySql (2) |
MySQL / MariaDB |
Read from configuration and pass to DatabaseExtensions, DbContextEventBusBase, and migration factories.
DatabaseExtensions
Duna.Libs.Core.DatabaseExtensions
Extension methods on DbContextOptionsBuilder for provider-agnostic configuration.
// Configure provider without migrations assembly (read/write contexts)
optionsBuilder.UseDatabase(connectionString, DatabaseProvider.PostgreSql);
// Configure provider with migrations assembly (migration context)
optionsBuilder.UseDatabaseWithMigrations(connectionString, DatabaseProvider.MySql, migrationsAssembly);
// Typed overloads for AddDbContext<T>
optionsBuilder.UseDatabase<MyDbContext>(connectionString, provider);
optionsBuilder.UseDatabaseWithMigrations<MyDbContext>(connectionString, provider, migrationsAssembly);
SQL Server is configured with compatibility level 120 (SQL Server 2014+) for broad compatibility.
DatabaseProviderDetector
Duna.Libs.Core.DatabaseProviderDetector
Resolves the active DatabaseProvider at runtime or during migrations from EF Core internals.
// In a migration
var provider = DatabaseProviderDetector.Detect(migrationBuilder);
// From context options
var provider = DatabaseProviderDetector.Detect(dbContext.Options);
Falls back to MsSql if detection fails.
SchemaHelper
Duna.Libs.Core.SchemaHelper
Resolves table names and schema values across providers. MySQL has no schema concept — the schema name is converted to a table prefix.
// SQL Server / PostgreSQL → schema: "Core", table: "EventBusMessage"
// MySQL → schema: null, table: "core_EventBusMessage"
string schema = SchemaHelper.GetSchema("Core", provider);
string table = SchemaHelper.GetTableName("EventBusMessage", "Core", provider);
SqlTypeHelper
Duna.Libs.Core.SqlTypeHelper
Returns provider-correct column type strings for use in OnModelCreating.
| Property | MsSql | PostgreSql | MySql |
|---|---|---|---|
SqlGuid |
uniqueidentifier |
uuid |
char(36) |
SqlDateTime |
datetime2 |
timestamptz |
datetime |
SqlText |
nvarchar(255) |
varchar(255) |
varchar(255) |
SqlTextMax |
nvarchar(max) |
text |
longtext |
SqlInt |
int |
int |
int |
SqlBigint |
bigint |
bigint |
bigint |
EventBus
A durable outbox-pattern event bus backed by a relational database and delivered via RabbitMQ.
DbContextEventBusBase
Duna.Libs.Core.EventBus.DbContextEventBusBase
Base DbContext for the EventBus schema. Inherit from this instead of DbContext to get the outbox tables and provider-aware OnModelCreating.
public class MyEventBusContext : DbContextEventBusBase
{
public MyEventBusContext(DbContextOptions options, DbContextEventBusOptions busOptions)
: base(options, busOptions) { }
}
// Registration (SQL Server)
new MyEventBusContext(efOptions, new DbContextEventBusOptions(DatabaseProvider.MsSql));
// Call after creation to ensure schema + dequeue infrastructure
await ctx.EnsureCreatedAsync();
Exposes typed SQL column helpers (SqlGuid, SqlDateTime, etc.) and SchemaCore = "Core".
EventBusAdaptor
Duna.Libs.Core.EventBus.EventBusAdaptor
Manages the RabbitMQ IConnection / IChannel lifecycle with reconnect logic. Used internally by EventBusMessageService.
var adaptor = new EventBusAdaptor(factory, logger, configs);
await adaptor.ConnectAsync();
ConnectionStatus exposes NotConnected, Connecting, Connected.
EventBusMessageService
Duna.Libs.Core.EventBus.EventBusMessageService
Hosted service that polls the outbox table and publishes pending messages to RabbitMQ queues, then marks them consumed. Handles batching (SendBatchCount), concurrency TTL, and retry intervals from EventBusConfigs.
EventBusConfigs / EventBusConnectionConfigs / EventBusQueueConfigs
Configuration POCOs for the event bus. Typically bound from appsettings.json.
{
"EventBus": {
"SendBatchCount": 50,
"SendMessageInterval": "00:00:10",
"SendMessageConcurrentTTL": "00:02:00",
"Connection": {
"Host": "localhost",
"Port": 5672,
"UserName": "guest",
"Password": "guest"
},
"Queues": [
{ "Name": "orders", "Exchange": "app" }
]
}
}
Call configs.OverrideValuesFromStringValues() to parse string-typed fields from environment variables.
EventBusMessage / EventBusMessagePublish / EventBusMessageConsumed
Outbox table entities:
| Type | Purpose |
|---|---|
EventBusMessage |
Pending outbox record. Written by the producer. |
EventBusMessagePublish |
View/DTO used during the publish phase. |
EventBusMessageConsumed |
Written after successful delivery to RabbitMQ. |
Implement IEventBusMessage on your domain events and use EventBusMessageMapper to convert them to outbox records.
DequeueHelper / DbMigrationHelper
DequeueHelper — generates provider-specific SQL for atomic dequeue (SELECT + UPDATE with FOR UPDATE SKIP LOCKED on PostgreSQL/MySQL, WITH (UPDLOCK, READPAST) on SQL Server).
DbMigrationHelper — generates provider-specific DDL (CREATE TABLE, CREATE INDEX, DROP TABLE) for the EventBus schema, used in EF migrations via MigrationBuilder.Sql(...).
Sorting
SortExpression / SortExpressionElement / SortService
Duna.Libs.Core.Sort
Serialize/deserialize a sort descriptor from a query-string format and apply it to any IQueryable<T>.
// Parse from string: "Name asc, CreatedAt desc"
SortExpression sort = "Name asc, CreatedAt desc";
// Apply to a query
var sorted = dbContext.Products.Sort("Name asc, Price desc").Skip(0).Take(20);
SortExpressionElement holds a single field name, direction, and order index.
SortExpressionElementType is the enum for Asc / Desc.
Mapping
MapperBase
Duna.Libs.Core.MapperBase<TInterface, TId> — implement Map(source, target) to get free list and generic overloads.
Duna.Libs.Core.MapperBase<TEntitySourceBase, TEntityTargetBase, TId> — dual-hierarchy variant; implement MapToSource and MapToTarget.
public class ProductMapper : MapperBase<IProduct, int>
{
public override IProduct Map(IProduct source, IProduct target)
{
target.Name = source.Name;
target.Price = source.Price;
return target;
}
}
EmptyMapper
Duna.Libs.Core.EmptyMapper<TInterface, TId>
No-op mapper where entity and DTO are the same type. Useful when no transformation is needed.
Utilities
Coder
Duna.Libs.Core.Coder
Generates sequential human-readable codes from a pattern string by incrementing the trailing numeric segment.
var coder = new Coder { Pattern = "ORD-0001", Seed = 1 };
string next = coder.NewCode; // "ORD-0002"
Set UseGeneralSequence = true to use UniqueIdGenerator instead of a simple seed increment.
Converter
Duna.Libs.Core.Converter
String conversion helpers: ToNullableInt(), ToNullableTimeSpan(), and related extension methods. Used internally by EventBusConfigs.OverrideValuesFromStringValues().
RingLoadbalancer
Duna.Libs.Core.RingLoadbalancer<TObject>
Thread-safe round-robin selector over a fixed array of objects. Use to distribute load across multiple DB contexts or connections.
var lb = new RingLoadbalancer<AppDbContext>(new[] { ctx1, ctx2, ctx3 });
var ctx = lb.Get(); // round-robin, thread-safe
TaskExtensions
Duna.Libs.Core.TaskExtensions
Helper extensions for fire-and-forget and safe Task continuation patterns.
ExpressionsExtensions / ITreeExtensions
Duna.Libs.Core.ExpressionsExtensions — LINQ expression helpers used internally by sort and query services.
Duna.Libs.Core.ITreeExtensions — extension methods on ILongTree / IStringTree for path manipulation.
Security
Duna.Libs.Core.Security
IPermission
IPermission<TAccessId> — marks a permission object with an AccessId.
IPermission<TAccessId, TAccessLevel> — extends with an AccessLevel and authorization check methods.
public interface IPermission<TAccessId>
{
TAccessId AccessId { get; }
bool IsAuthorized(string base64EncodedPermission);
}
PermissionEncoder
Duna.Libs.Core.Security.PermissionEncoder
Encodes lists of permissions to compact binary (byte array) or Base64 strings, and decodes them back. Useful for embedding permission sets in JWT claims or cookies.
// Encode a permission list to bytes
byte[] encoded = permissions.Encode();
// Encode to Base64 string (for JWT claims)
string base64 = permissions.EncodeToBase64String();
// Decode back to permission objects
var perms = encoded.Decode<MyPermission, long>().ToList();
// Decode with access level
var perms = encoded.Decode<MyPermission, long, long>().ToList();
// Decode from Base64
var perms = base64.DecodeFromBase64String<MyPermission, long>().ToList();
Cryptography
Duna.Libs.Core.Security.Cryptography
Provides common hashing and encryption utilities (MD5, SHA, AES) for passwords and sensitive data.
CaptchaCreator
Duna.Libs.Core.Security.CaptchaCreator
Generates image-based captcha challenges (math operations or text). Returns a CaptchaResult with the question image and the expected answer.
var captcha = CaptchaCreator.Create(CaptchaCreator.Operation.Add);
// captcha.Question — byte[] PNG image
// captcha.Answer — int expected answer
Auxf (Auxiliary Utilities)
Duna.Libs.Core.Auxf
Copier
Duna.Libs.Core.Auxf.Copier
Reflection-based property copying utilities.
CopyProperties<TDestination>() — copies all primitive and string properties by matching name and type to a new instance of TDestination.
var dto = entity.CopyProperties<ProductDto>();
Fill<TEntity, TInterface>(filler) — fills only the null properties of an existing object from a filler object, using the interface's property set as scope.
// Only null fields in 'entity' are filled from 'defaults'
var result = entity.Fill<Product, IProduct>(defaults);
EnumExtensions
Duna.Libs.Core.Auxf.EnumExtensions
Extension methods for [Flags] enums across all underlying integer types (byte, int, long, ulong).
RemoveFlags(flags) — removes the specified flags from the enum value without affecting others.
var perms = MyFlags.Read | MyFlags.Write | MyFlags.Delete;
perms = perms.RemoveFlags(MyFlags.Delete); // → Read | Write
ChecksumGenerator
Duna.Libs.Core.Auxf.ChecksumGenerator
Generates checksums over byte arrays or strings for data integrity verification.
Graphics
Duna.Libs.Core.Graphics
ImageGenerator / BitmapHelper
ImageGenerator — creates in-memory images (used by CaptchaCreator).
BitmapHelper — low-level bitmap pixel manipulation helper used internally for image distortion effects.
Exceptions
ExceptionBase / ErrorCode
Duna.Libs.Core.Exceptions.ExceptionBase
Structured exception with ModuleId, ErrorCode, and HttpCode for API error mapping.
public class MyException : ExceptionBase
{
public MyException(string message)
: base(moduleId: 1, errorCode: 1001, httpCode: 400, message: message) { }
}
Duna.Libs.Core.Exceptions.ErrorCode — pre-defined error code constants.
Duna.Libs.Core.Enums.AccessLevel — enum for permission levels used by authorized services.
Type Reference
| Type | Namespace | Kind |
|---|---|---|
IEntity<T> |
Duna.Libs.Core.Interfaces |
Interface |
ICrudService<TDto, TId> |
Duna.Libs.Core.Interfaces |
Interface |
IAuthorizedService<TDto, TId> |
Duna.Libs.Core.Interfaces |
Interface |
IMapper<TInterface, TId> |
Duna.Libs.Core.Interfaces |
Interface |
IMapper<TSource, TTarget, TId> |
Duna.Libs.Core.Interfaces |
Interface |
IIdProvider<TEntity, TId> |
Duna.Libs.Core.Interfaces |
Interface |
IContextProvider<TDbContext> |
Duna.Libs.Core.Services |
Interface |
ICurrentUser<TId> |
Duna.Libs.Core.Interfaces |
Interface |
ICurrentUserDataProvider |
Duna.Libs.Core.Interfaces |
Interface |
IWorker |
Duna.Libs.Core.Interfaces |
Interface |
ILongTree |
Duna.Libs.Core.Interfaces |
Interface |
IStringTree |
Duna.Libs.Core.Interfaces |
Interface |
CrudService<…> |
Duna.Libs.Core.Services |
Class |
AuthorizedServiceBase<…> |
Duna.Libs.Core.Services |
Class (abstract) |
LongTreeCrudService<…> |
Duna.Libs.Core.Services |
Class |
StringTreeCrudService<…> |
Duna.Libs.Core.Services |
Class |
ContextProvider<TDbContext> |
Duna.Libs.Core.Services |
Class |
MapperBase<TInterface, TId> |
Duna.Libs.Core |
Class (abstract) |
MapperBase<TSource, TTarget, TId> |
Duna.Libs.Core |
Class (abstract) |
EmptyMapper<TInterface, TId> |
Duna.Libs.Core |
Class |
IdProviderBase<…> |
Duna.Libs.Core.IdProviders |
Class (abstract) |
GuidIdProvider<TDbContext, TEntity> |
Duna.Libs.Core.IdProviders |
Class |
LongIdProvider<TDbContext, TEntity> |
Duna.Libs.Core.IdProviders |
Class |
Int32IdProvider<TDbContext, TEntity> |
Duna.Libs.Core.IdProviders |
Class |
NumericIdProvider<TDbContext, TEntity, TId> |
Duna.Libs.Core.IdProviders |
Class |
SnowflakeIdProvider<TDbContext, TEntity> |
Duna.Libs.Core.IdProviders |
Class |
HybridNodeIdProvider<TDbContext, TEntity> |
Duna.Libs.Core.IdProviders |
Class |
DisabledIdProvider<TDbContext, TEntity, TId> |
Duna.Libs.Core.IdProviders |
Class |
UniqueIdGenerator |
Duna.Libs.Core.IdProviders |
Class (static) |
LongIdGenerator |
Duna.Libs.Core.IdProviders |
Class |
SnowflakeIdGenerator |
Duna.Libs.Core.IdProviders |
Class |
LongTreeIdExtensions |
Duna.Libs.Core.IdProviders |
Class (static) |
StringTreeIdExtensions |
Duna.Libs.Core.IdProviders |
Class (static) |
DatabaseProvider |
Duna.Libs.Core.Enums |
Enum |
AccessLevel |
Duna.Libs.Core.Enums |
Enum |
DatabaseExtensions |
Duna.Libs.Core |
Class (static) |
DatabaseProviderDetector |
Duna.Libs.Core |
Class (static) |
SchemaHelper |
Duna.Libs.Core |
Class (static) |
SqlTypeHelper |
Duna.Libs.Core |
Class (static) |
RingLoadbalancer<TObject> |
Duna.Libs.Core |
Class |
Coder |
Duna.Libs.Core |
Class |
Converter |
Duna.Libs.Core |
Class (static) |
TaskExtensions |
Duna.Libs.Core |
Class (static) |
ExpressionsExtensions |
Duna.Libs.Core |
Class (static) |
ITreeExtensions |
Duna.Libs.Core |
Class (static) |
SortExpression |
Duna.Libs.Core.Sort |
Class |
SortExpressionElement |
Duna.Libs.Core.Sort |
Class |
SortExpressionElementType |
Duna.Libs.Core.Sort |
Enum |
SortService |
Duna.Libs.Core.Sort |
Class (static) |
DbContextEventBusBase |
Duna.Libs.Core.EventBus |
Class |
EventBusAdaptor |
Duna.Libs.Core.EventBus |
Class |
EventBusMessageService |
Duna.Libs.Core.EventBus |
Class |
EventBusConfigs |
Duna.Libs.Core.EventBus |
Class |
EventBusConnectionConfigs |
Duna.Libs.Core.EventBus |
Class |
EventBusQueueConfigs |
Duna.Libs.Core.EventBus |
Class |
EventBusMessage |
Duna.Libs.Core.EventBus |
Class |
EventBusMessagePublish |
Duna.Libs.Core.EventBus |
Class |
EventBusMessageConsumed |
Duna.Libs.Core.EventBus |
Class |
EventBusMessageRequest |
Duna.Libs.Core.EventBus |
Class |
EventBusMessageMapper |
Duna.Libs.Core.EventBus |
Class |
EventBusMessageStatus |
Duna.Libs.Core.EventBus |
Enum |
IEventBusMessage |
Duna.Libs.Core.EventBus |
Interface |
DequeueHelper |
Duna.Libs.Core.EventBus |
Class (static) |
DbMigrationHelper |
Duna.Libs.Core.EventBus |
Class (static) |
ConnectionStatus |
Duna.Libs.Core.EventBus |
Enum |
ExceptionBase |
Duna.Libs.Core.Exceptions |
Class (abstract) |
ErrorCode |
Duna.Libs.Core.Exceptions |
Class (static) |
IPermission<TAccessId> |
Duna.Libs.Core.Security |
Interface |
IPermission<TAccessId, TAccessLevel> |
Duna.Libs.Core.Security |
Interface |
PermissionEncoder |
Duna.Libs.Core.Security |
Class (static) |
Cryptography |
Duna.Libs.Core.Security |
Class (static) |
CaptchaCreator |
Duna.Libs.Core.Security |
Class (static) |
Copier |
Duna.Libs.Core.Auxf |
Class (static) |
EnumExtensions |
Duna.Libs.Core.Auxf |
Class (static) |
ChecksumGenerator |
Duna.Libs.Core.Auxf |
Class (static) |
ImageGenerator |
Duna.Libs.Core.Graphics |
Class |
BitmapHelper |
Duna.Libs.Core.Graphics |
Class |
HierarchyHelper |
Duna.Libs.Core.Tree |
Class (static) |
| Product | Versions 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. |
-
net10.0
- Microsoft.EntityFrameworkCore (>= 10.0.8)
- Microsoft.EntityFrameworkCore.SqlServer (>= 10.0.8)
- Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite (>= 10.0.8)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.8)
- MySql.EntityFrameworkCore (>= 10.0.7)
- Newtonsoft.Json (>= 13.0.4)
- Npgsql.EntityFrameworkCore.PostgreSQL (>= 10.0.1)
- Npgsql.EntityFrameworkCore.PostgreSQL.NetTopologySuite (>= 10.0.1)
- RabbitMQ.Client (>= 7.2.1)
- System.Drawing.Common (>= 10.0.7)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Duna.Libs.Core:
| Package | Downloads |
|---|---|
|
Duna.Libs.Web
Dunasoft Libraries Web Utilities |
|
|
Duna.Libs.Utils
Dunasoft Libraries Utilities |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.8 | 134 | 5/26/2026 |
| 1.0.7 | 105 | 5/25/2026 |
| 1.0.6 | 111 | 5/25/2026 |
| 1.0.5 | 106 | 5/25/2026 |
| 1.0.4 | 103 | 5/25/2026 |
| 1.0.3 | 126 | 5/22/2026 |
| 1.0.2 | 129 | 5/18/2026 |
| 1.0.1 | 136 | 5/15/2026 |
| 1.0.0 | 125 | 5/12/2026 |
| 0.1.6 | 93 | 5/12/2026 |
| 0.1.5 | 118 | 5/11/2026 |
| 0.1.4 | 140 | 5/4/2026 |
| 0.1.3 | 123 | 5/4/2026 |
| 0.1.2 | 119 | 5/4/2026 |
| 0.1.1 | 122 | 4/26/2026 |
| 0.1.0 | 109 | 4/26/2026 |
| 0.0.59 | 122 | 3/27/2026 |
| 0.0.58 | 207 | 2/23/2026 |
| 0.0.57 | 144 | 2/23/2026 |
| 0.0.56 | 161 | 2/22/2026 |