Wissance.WebApiToolkit.Ef
5.2.0
dotnet add package Wissance.WebApiToolkit.Ef --version 5.2.0
NuGet\Install-Package Wissance.WebApiToolkit.Ef -Version 5.2.0
<PackageReference Include="Wissance.WebApiToolkit.Ef" Version="5.2.0" />
<PackageVersion Include="Wissance.WebApiToolkit.Ef" Version="5.2.0" />
<PackageReference Include="Wissance.WebApiToolkit.Ef" />
paket add Wissance.WebApiToolkit.Ef --version 5.2.0
#r "nuget: Wissance.WebApiToolkit.Ef, 5.2.0"
#:package Wissance.WebApiToolkit.Ef@5.2.0
#addin nuget:?package=Wissance.WebApiToolkit.Ef&version=5.2.0
#tool nuget:?package=Wissance.WebApiToolkit.Ef&version=5.2.0
Wissance.WebApiToolkit
- Core
- Ef extensions
- Cloud AWS S3 utils
One Line of code for Fully functional CRUD Controller with Swagger doc
Why Wissance.WebApiToolkit
| Without | With Wissance.WebApiToolkit |
|---|---|
⛔ Manual support for the API uniformity |
✅ Output of all REST methods is standardize |
| ⛔ Every Controller requires at least 20 min to be written | ✅ Up to one line of code for fully functional CRUD |
| ⛔ Inconsistent error response | ✅ Unified error format out of the box |
| ⛔ Requires to rewrite controllers to add a new<br/> technology | ✅ Requires only a new Manager class |
| ⛔ Not supporting bulk operation by default | ✅ Up to one line of code for fully functional BULK API |
⛔ Controller logic can't be easily used for<br/>gRPC or SignalR |
✅ You could have the same Manager to<br/> handle REST, gRPC,and a SignalR simultaneously |
| ⛔ Paging and Sorting should be written for<br/>every controller separately | ✅ Paging and sorting are implemented<br/> out of the box in the uniform manner |
Minimal example
For the full doc see the 📚 project wiki, to add in one line, for example i break it to Assembly get and add Controller, i.e.:
- Generate assembly:
Assembly stationControllerAssembly = services.AddSimplifiedAutoController<StationEntity, Guid, EmptyAdditionalFilters>(
provider.GetRequiredService<ModelContext>(), "Station",
ControllerType.FullCrud, null, provider.GetRequiredService<ILoggerFactory>());
- Add Controller from assembly:
services.AddControllers().AddApplicationPart(stationControllerAssembly).AddControllersAsServices();
Key Features
- 🔥
REST API Controllerwith fullCRUDcontains only 20 lines of code (~ 10 are imports)GETmethods have built-in paging support;GETmethods have built-in sorting and filter by query parameters;
- 🚀 BULK operations with objects (Bulk
Create,UpdateandDelete) on a Controller && interface level - 🧠 support to work with any persistent storage (
IModelManagerinterface); Good built-in EntityFramework support (seeEfModelManagerclass). See WeatherControl App which has - 🎨 Manager classes that support file operation over:
- web folders (folders from mounted devices or just local folders)
- S3 AWS-compatible (tested with
Yandex Object Storageand previously withCloudflare R2andAmazon S3)
🆒 Bulk vs 🙅♂️ Non-Bulk, Wissance.WebApiToolkit has Bulk out of the box:
- 😱 Elapsed time in Non-Bulk REST API with EF is <span style="color:red">~976 ms.</span>
- 🔥 Elapsed time in Bulk API with EF is <span style="color:green">~4 ms.</span>
✨ Result : Bulk API is almost <span style="color:green">~250 x faster</span>!
Additional materials (Post, articles, video)
You could see our articles about Toolkit usage:
- ✍️ Medium article about v1.0.x usage
- ✍️ Dev.to article about v1.0.x usage
- ✍️ One line for full CRUD Medium article
Contributors
<a href="https://github.com/Wissance/WebApiToolkit/graphs/contributors"> <img src="https://contrib.rocks/image?repo=Wissance/WebApiToolkit" /> </a>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. 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. net9.0 is compatible. 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. |
-
net6.0
- Microsoft.EntityFrameworkCore (>= 7.0.20)
-
net8.0
- Microsoft.EntityFrameworkCore (>= 7.0.20)
-
net9.0
- Microsoft.EntityFrameworkCore (>= 7.0.20)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
In this version it is possible to create controllers via 1-line-code with custom Dto and Create/Update factory delegates have additional param to get DbContext that allows to create/update objects by default with many-2-many relations