Automatic CRUD endpoint generator for ASP.NET Core minimal APIs
$ dotnet add package CrudBusterAn automatic CRUD endpoint generator for ASP.NET Core Minimal APIs that scans your project's entities and automatically generates corresponding CRUD (Create, Read, Update, Delete) service endpoints based on those entities, streamlining API development and reducing boilerplate code."
CrudBuster, allows you to quickly and flexibly generate CRUD (Create, Read, Update, Delete) endpoints in your ASP.NET Core applications. You can define your endpoints without relying on any interface by integrating your own service classes through delegates.
Add the NuGet package to your project:
Thank you for testing our beta version! You can share your issues or suggestions via GitHub Issues.
🎉 First stable release
This version marks the first stable release of CrudBuster, following several beta versions and improvements. It includes all core features to simplify CRUD endpoint generation in ASP.NET Core Minimal APIs:
Highlights:
✅ Automatic CRUD endpoint generation via delegates
✅ Minimal API support (.NET 6+)
✅ Flexible service integration
✅ ViewModel auto-generation
✅ Authorization support
✅ Layered architecture configuration
✅ Modular and extensible core
We believe this release provides a solid foundation for production use. We welcome your feedback for future improvements!
app.CrudBuster(opt => opt
//!!! It must be the same as the method name in the repository.
.WithGetByIdService("GetAsync")
//!!! It must be the same as the method name in the repository.
.WithGetListService("GetListAsync")
//!!! It must be the same as the method name in the repository.
.WithCreateService("CreateAsync")
//!!! It must be the same as the method name in the repository.
.WithUpdateService("UpdateAsync")
//!!! It must be the same as the method name in the repository.
.WithDeleteService("DeleteAsync")
//It searches for entities in this layer.
.WithDomainLayer("DOmain")
//It searches for view models in this layer.
.WithViewModelLayer("Application")
//It searches for repo in this layer.
.WithRepositoryLayer("Infrastructure")
//In this field, you must assign the last part of the name you used in your view model classes. For example: ProductCreate*ViewModel*, ProductCreate*VM*, ProductCreate*DTO*, or whatever naming convention you follow.
.WithViewModelPattern("VM")
//You must provide your own view model path."
.WithViewModelOutput(Directory.GetCurrentDirectory()+"/ViewModels")
// !!!The database tables must have the same name as the base entity class they inherit from.
.WithBaseEntityName("IBaseEntity")
//If required authenticate
.WithIsAuthenticateRequired(false)
//This field specifies which permissions can access the controller. You can set it to null
.WithAuthorizationPolicy("Admin, User, SuperAdmin")
//!!! It has to be the same as the name of the repository.".
.WithRepositoryName("IRepository"));
Binance
BTC: 13mzeg11nGAHwx5WtHye5dpNTQxbsb1T2v
ETH: 0xadcdb8c83207821f86e9ff683cc74fa45e48ca30
SOL: EdQCWcWmvsEJq9PxnVegviJipcExZUUgEz2ZZTBbhQVa