πŸ‘¨β€πŸ’» niltor    πŸ“† 2026-09-03 17:04

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.Core and Ater.Web.Convention were merged into Perigon.AspNetCore, with non-essential features removed.
  • Ater.Web.Extensions was adjusted into Perigon.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.