Make .NET development easier, more versatile, and more popular.
Official application package
Official scaffolding
Update this issue
- New features
- [New] Mvc template scaffolding: `Fur.Template.Mvc`
- [New] WebApi template: `Fur.Template.Api`
- [New] Mvc/WebApi template: `Fur.Template.App`
- [New] Razar Pages template: `Fur.Template.Razor`
- [New] Blazor template: `Fur.Template.Blazor`
- [New] `Db.GetDbContext()` Get the default database context method
- [New] `HttpContextUtility.GetCurrentHttpContext()` to get the global `HttpContext` context
- [New] `App.GetRequiredService<>` Analysis service method
- [New] `object.GetService<>` object extension method
- [New] Policy authorization `PolicyPipeline` base class method, support multiple judgment authorization
- [New] `JWTEncryption.ValidateJwtBearerToken` manual verification static method
- [New] `.AddDateTimeJsonConverter(format)` time format serialization configuration
- [New] Global database context `InsertOrUpdateIgnoreNullValues` and `EnabledEntityStateTracked` global configuration
- [New] `Pomelo.EntityFrameworkCore.MySql` latest .NET 5 package configuration [#I24ZQK]
- [New] `DateTime` and `DateTimeOffset` type serialization format configuration [#I253FI]
- [New] `Swagger Jwt authorization` global authorization parameters [#I26GLR]
- [New] `InsertOrUpdate` supports custom judgment condition function [#I269Q1]
- [New] Lowercase naming support for string fields [#I2695D]
- [New] String text comparison function [#I268LE]
- [New] Global exception feature message function [#I2662O]
- [New] `Insert` or `Update` database ignore null value function [#I264Q4]
- Breakthrough changes
- [Update] `Mapster` package to version `7.0.0`
- [Adjustment] `Fur` project name is `Furion`
- [Adjustment] `Db.GetRequestDbContext<>()` is named as `Db.GetDbContext<>()`
- [Adjustment] `Db.GetDbContext<>()` is named `Db.GetDuplicateDbContext<>()`
- [Adjustment] `PagedList` to `System.Collections.Generic` namespace
- [Adjustment] `App.Services` is named `App.ServiceProvider`
- [Remove] `App.ApplicationServices` and `App.GetRequestService<>()`
- [Remove] Non-Web Host Injection Extension
- [Remove] `App.GetRequestService<>` method
- [Remove] `ValidateJwtBearer` Jwt authorization method, no need to manually judge
- [Refactoring] The underlying logic of `App.GetService<>` parsing service greatly improves the performance of parsing service
- [Optimization] Analyze service performance issues and optimize the underlying code
- [Refactoring] Authorize the core code and maintain the authorization specifications consistent with Microsoft [#I26DCB]
- Problem fix
- [Fix] Compilation error bug after Furion official scaffolding is generated
- [Fix] `Tenant` built-in properties are not `virtual` decoration bug
- [Fix] `dockerfile` new named build failure bug
- [Fix] `services.AddFriendlyException()` lacks configuration injection bug
- [Fix] Database context pool is released and memory overflow bug under high concurrency [#I2524K] , [#I24UMN]
- [Fix] Exception bug when `Sql agent` returns empty data [#I24TCK]
- [Fix] Work unit `[UnitOfWork]` multi-database is released bug [#I24Q6W]
- [Fix] 403 bug appears when custom role authorization and multiple authorizations coexist [#I26H1L]
- [Fix] `Oops.Oh` empty exception and unsupported service service throw exception bug [#I26EFU] , [#I26GM4]
- [Fix] `cli.ps` generated file encoding garbled bug [#I26DVT]
- [Fix] `Swagger` file upload button does not display [#I26B6U]
- [Fix] Normalization result authorization status code serialization case inconsistency problem [#I26B26]
- [Fix] Chinese garbled bug when normalized results are not enabled [#I268T5]
- [Fix] `MySql` cannot catch asynchronous exception bug [#I265SO]
- [Fix] `cli.ps1` prompts that the database connection string cannot be found bug [#I2647U]
- [Fix] `ApiSears.ControllerEnd` does not work bug [#I25KH6]
- [Fix] `RemoteRequest` request completion result serialization property case problem [#I25I8R]
- [Fix] `HttpContext.GetEndpoinet()` empty exception bug [#PR73]
- Other changes
- [Adjustment] All attributes of `EntityBase` and `Entity` are decorated with `vitural`
- [Optimization] `Jwt` reading and parsing performance
- [Optimization] Optimize the code to support the latest syntax of C# 9.0
- [Remove] Useless or unused code
- [Other] Small optimizations and small adjustments to code performance
- [Optimization] `MD5` encryption performance [#PR71]
- [Close] [#I265JV] , [#I26ERA] , [#I26EVW] , [#I26GHC] , [#I26GJ1] , [#I26O1F]
- Document changes
- [Update] One-minute entry, security authentication, database, database context document, multi-database operation document
Document address
- Domestic documents: https://monksoul.gitee.io/furion/
- Foreign documents: https://furion.pro
project address
- Gitee:https://gitee.com/monksoul/Furion
- GitHub:https://github.com/monksoul/Furion
- Docker:https://hub.docker.com/r/monksoul/furion
- Nuget :https://www.nuget.org/packages/Furion
functional module
Furion follows the Apache-2.0 open source agreement, and welcomes everyone to submit a PR or Issue . If you like, you can give a Star .