10.0 Major Changes
Version 10.0 is a new starting point. It includes many new features and improvements, and also restructures the underlying architecture to improve performance and maintainability.
Solution Template
The template was reworked to provide an out-of-the-box development experience. The main goals are simplification and standardization: remove project-specific habits where possible and use general approaches that fit most application scenarios.
Simplified Framework Packages
Ater.Web.CoreandAter.Web.Conventionwere merged intoPerigon.AspNetCore, with non-essential features removed.Ater.Web.Extensionswas adjusted intoPerigon.AspNetCore.Toolkit, which carries helper capabilities such as email, object storage, and Excel. Whether a capability is enabled depends on configuration and application code.
Simplified DbContext
Earlier versions separated CommandDbContext and QueryDbContext. This increased mental overhead during development and did not work well when read/write separation was unnecessary or when different databases were involved.
The default template now provides only one main data context: DefaultDbContext.
If you need a read-only context, inherit from ReadonlyDbContext.
Refactored ManagerBase
ManagerBase is now lighter and more flexible. It is an abstract base class that can be inherited whether your Manager needs database access or not.
ManagerBase<TDbContext, TEntity> has simplified and optimized internal methods. See the Manager business logic best-practice document for available methods and usage.
Localization
The default template supports localization. Generated controllers inject Localizer by default so localized strings can be returned from API logic.
The source generator can also generate constant definitions from resource files, so code can use generated constants instead of manually maintained string keys.
Aspire First
As Aspire has matured, the template uses Aspire as a core dependency and gives it a larger role in local development and service composition.
The template uses Aspire integration packages so cache and database resources have observability support by default.
Conventions
Unified Exception Middleware
The template provides unified exception handling through middleware. See GlobalExceptionMiddleware and extend it for project-specific logic when needed.
RESTful API Style
Generated controllers now follow a more RESTful API style.
| API | Before | Now |
|---|---|---|
| Filter | POST | GET |
| Add | 200 | 201 |
| Update | - | 200, with the updated entity in the response |
| Delete | - | 204 |
Performance
For simple add, update, and delete operations, generated code no longer queries data first by default. It directly executes SQL operations and checks affected rows to determine whether the target data exists.
Note
More complex business logic may still need a query first, such as authorization checks, preconditions, or workflow validation.
Other Changes
Hybrid Cache
The template supports HybridCache-based cache usage.
Swashbuckle.AspNetCore 10.0
This mainly affects the Microsoft.OpenApi package and upgrades the OpenAPI specification version to 3.1.0.
In this article