Axolotl 8.0.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package Axolotl --version 8.0.2                
NuGet\Install-Package Axolotl -Version 8.0.2                
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="Axolotl" Version="8.0.2" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Axolotl --version 8.0.2                
#r "nuget: Axolotl, 8.0.2"                
#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.
// Install Axolotl as a Cake Addin
#addin nuget:?package=Axolotl&version=8.0.2

// Install Axolotl as a Cake Tool
#tool nuget:?package=Axolotl&version=8.0.2                

Axolotl

A personal shared library for various types of dotnet project types

NOTE: Issues can be created to improve documentation and fix errors

Sub-packages

Axolotl:

Axolotl.Http:

Axolotl.EFCore:

Axolotl.Razor:

Install

The framework is provided as a set of NuGet packages. In many cases you'll only need the base package, but if you need efcore, razor or Maui there are implementation-specific packages available to assist.

To install the minimum requirements:

Install-Package Axolotl

To install support for serialization, AutoFixture, EF Core, Model Binding, or Dapper select the lines that apply:

Install-Package Axolotl
Install-Package Axolotl.Http
Install-Package Axolotl.EFCore
Install-Package Axolotl.AspNet
Install-Package Axolotl.Razor

Asp.Net Core Samples

Added required packages

Install-Package Axolotl
Install-Package Axolotl.EFCore
Install-Package Axolotl.AspNet

Add sample entity

public sealed class Post : AuditableEntity<Guid> {
    public string Title { get; set; } = null!;
    public Category Category { get; set; } = null!;
    public ICollection<Tag> Tags { get; set; } = null!;
}

Add to context

public class ServiceContext : DbContext {
    public ServiceContext(DbContextOptions<ServiceContext> options) : base(options) { }
    protected override void OnModelCreating(ModelBuilder modelBuilder) { }
    
    public virtual DbSet<Post> Posts { get; set; } = null!;
    
}

Create your generic repository and apply DbContext

public class GenericRepository<TEntity, TKey> : GenericBaseRepository<TEntity, ServiceContext, TKey> 
    where TEntity : class, IAggregateRoot, IHasKey<TKey> 
    where TKey : notnull {
    public GenericRepository(ServiceContext context) : base(context) { }
}

Register generic repository

builder.Services.RegisterGenericRepositories(typeof(GenericRepository<,>));
builder.Services.RegisterGenericServices();

Create optional filter specification

public sealed class CategorySpec : Specification<Post, Guid> {
    public CategorySpec(IPageFilter filter) {
        var search = filter.Search ?? string.Empty;
        var text = search.ToLower().Split(" ").ToList().Select(x => x);
        Query.Where(x =>  x.Title != String.Empty && x.Title.Length > 3 && text.Any(p => EF.Functions.Like(x.Title.ToLower(), $"%" + p + "%")))
            .AsNoTracking()
            .OrderBy(b => b.Title);
    }
}

Create feature/endpoint

public class CategoryFeature : GenericFeature<CategoryFeature, Guid> {
    public override IEndpointRouteBuilder MapEndpoints(IEndpointRouteBuilder endpoints) {
        var state = new FeatureState(new List<RouteState> {
            new (RouteType.GetAll, typeof(CategorySpec)),
            new (RouteType.GetById),
            new (RouteType.Create)
        });

        return SetupGroup<CategoryFeature, Category, Guid>(endpoints, state);
    }
}
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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (4)

Showing the top 4 NuGet packages that depend on Axolotl:

Package Downloads
Axolotl.EFCore

Classes and extensions to help simplify efcore usage in .NET.

Axolotl.AspNet

Classes and extensions to help simplify using ASP.NET.

Axolotl.Razor

Components to help simplify razor and blazor usage in .NET.

Axolotl.Http

Classes help to simplify HTTP usage in .NET.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.5 308 1/22/2024
8.0.2 150 1/22/2024
8.0.1 177 1/13/2024
8.0.0 278 11/22/2023
8.0.0-rc.1 77 11/16/2023
8.0.0-preview.20 94 10/3/2023
8.0.0-preview.19 160 7/6/2023
8.0.0-preview.18 110 6/6/2023
8.0.0-preview.17 103 6/6/2023
8.0.0-preview.16 90 6/6/2023
8.0.0-preview.14 90 6/6/2023
8.0.0-preview.13 95 6/6/2023
8.0.0-preview.12 90 6/6/2023
8.0.0-preview.11 90 6/5/2023