v1 版本(归档)- 更新日志
Furion 框架升级/发版规则
升级前重点关注可能造成【破坏性】的标签类型:、、、
版本号规则:主版本号.次版本号.修订版本号.迭代版本号
- 只要【确认】为框架
bug,则当天修复,当天发版,修订版本号加 1。 - 只要
.NET SDK版本更新,则当天升级,当天发版,修订版本号加 1。 - 如果
.csproj文件有变更,则当天发版,修订版本号加 1。 - 如果新增
扩展包,为了版本号统一,则当天发版,修订版本号加 1。 - 如果涉及到代码重构,则当天发版,次版本号
加 1,修订版本号清 0。 - 如果
.NET SDK主版本号升级,则当天发版,主版本号加 1。
如有意外不能当天发版,则会在 Issue 中说明具体发版时间,正常不会超过 3 天。
v1.19.0 (已发布)
- 新特性
- 突破性变化
- .NET 5 SDK 至 5.0.5 版本
- 问题修复
- 其他更改
- 文档变化
- 数据库上下文、多租户、仓储、日志、序列化等文档。
- 问答答疑
v1.18.0 (已发布)
- 新特性
- 突破性变化
- 问题修复
- 其他更改
- 文档变化
- 数据库操作文档 #I3E84X
- 问答答疑
v1.17.0 (已发布)
- 新特性
- 突破性变化
-
IRepository.AsAsyncEnumerable()返回值 #I3DIQ1,调整为:rep.AsQueryable().ToListAsync()
-
- 问题修复
- 其他更改
- 文档变化
- 远程请求文档 #I3CPJO
- 问答答疑
v1.16.0 (已发布)
- 新特性
- 突破性变化
- 问题修复
-
MVC模式下不支持验证自定义验证逻辑 #I39LM5 - 验证数值类型正则表达式不支持负数 bug #I39YUV
- 框架启动时无法加载未被引用的程序集 bug #I3A3Z4
-
EFCoreRepository.IsAttached()方法判断错误 bug #I3A824 -
动态API驼峰显示配置无效 bug #I3AF32 -
cli.ps1不支持新版本EFCorebug #I3APO9 -
EFCore实体配置[Table]特性无效 bug #I3BAYH - 动态 WebAPI
CheckIsSplitCamelCasebug #I3BLKX - 动态 WebAPI 配置保留 Action 的 Async 后缀无效问题 #I3C3DA
-
JWTToken 刷新后旧的刷新 Token 依旧可用 bug #I3C8ZH - 多语言
Razor视图变量多语言乱码问题 #I3CBMU
-
- 其他更改
- 文档变化
- 问答答疑
-
Furion.Extras.DatabaseAccessor.SqlSugar配置多个数据库打印 SQL 语句问题 #I39PDC -
ORACLE数据库多租户模式下返回值为指定类型时系统卡死 #I39RNH - 假删除指向异常 #I39XZA
-
Furion多语言配置节是放在AppSettings里面还是外面呢? #I3A4SB - 没找到数据库上下文 #I3A5HS
- 有
QQ交流群吗? #I3AAM7 -
Vue3环境下配置SignalR跨域出错 #I3ALQ7 - 设置
Swagger参数非必填 #I3AT02 - EFCore 调用 Insert 时报
Unknown column 'Discriminator' in 'field list'异常 #I3B2LC - 逆向
mysql数据库时cli出现错误 #I3B64F - Sql 高级代理使用过程中 DateTime 类型的参数序列化失败 #I3AZXK
- 使用 Mysql 执行 Add-Migration 报错 #I3B8EW
- Saas 多租户模式-独立 Database 模式下无法获取 Tenant, 导致无法自动切换的问题#I3AVXU
- 如何自定义 WebAPI 统一结果模型 #I3BBYW #I3BBYV
- 在
Web.Entry项目新建了一个Controller,多了未知方法 #I3BKH5 -
AOP拦截如何解析服务 #I3BUM3 - 动态 WebAPI 返回参数被省略 #I3C2XR
- 如何设置某一个接口响应数据不自动转小写,按原始字段名返回 #I38L9B
- code first 如何配置自动迁移 #I3CCR0
- webapi 混合授权如何区分不同系统 #I3CJCY
- EFCore 不支持递归无限级遍历关系 #I3CET9
-
v1.15.0 (已发布)
- 新特性
- 突破性变化
- 问题修复
- 其他更改
- 代码不规范命名导致开发者阅读代码时产生歧义
- 文档变化
-
FluentValidation集成文档 #I38IOT
-
- 问答答疑
-
Furion框架版本向下兼容问题 #I38WMZ
-
v1.14.0(已发布)
- 新特性
- 突破性变化
- 问题修复
- 其他更改
- 文档变化
v1.13.0(已发布)
- 新特性
- 多语言功能及扩展 #I2DOCL
- 事件总线功能及消息中心 #I23BKN
-
Swagger分组显示隐藏配置 #I2AHH8 -
Furion.Extras.Logging.Serilog扩展插件 #I2AAN8 -
cli.ps支持-Namespace命名空间指定 #I2A175 -
Swagger规范化化文档授权失效后自动取消授权锁 #I2AIWC -
Request.Body支持重复读功能,主要解决微信 SDK 问题 #I2AMG0 - 网络请求功能及文档 #I2APGJ
-
SqlSugar扩展包支持打印sql到MiniProfiler中 #I2ASLS -
Furion.Extras.DatabaseAccesssor.Dapper扩展插件 #I2ASYA -
Furion.Extras.DatabaseAccessor.PetaPoco扩展插件 #I2AUGA - 网络请求字符串扩展方法 #I2CPQ0
-
SqlSugar扩展新增PagedList扩展 #I2CW99 - 远程请求支持参数特性验证 #I2CX5L
-
App.User获取当前授权用户信息便捷方法 #I2CZLO - 规范化文档可配置功能,支持
appsettings.json配置 #I2D1K9 - 远程请求拦截器添加方法和方法参数 #I2D2CM
- 远程请求出错返回默认值支持 #I2D44M
- 远程请求
body参数序列化支持设置PropertyNamingPolicy#I2D685 - 远程服务接口客户端配置 #I2D7PS
-
AddInject和UseInject允许自定义SecurityDefinitions和SwaggerUI#I2DIMG -
[SecurityDefine]默认构造函数 #I2DNXT -
AspectDispatchProxy动态代理类 #I2DO6I -
[QueryParameters]特性,支持一键将Action参数添加[FromQuery]特性 #I2G8TF - 动态日志配置及扩展方法 #I2GDGD
-
WebApi请求谓词默认规则配置功能 #I2M70X
- 突破性变化
-
.NET 5SDK 到.NET 5.0.2版本 #I2D0PZ - 框架内所有扩展类命名空间,全部迁移到
Furion.模块.Extensions下 #I2AH54 -
Swagger记住授权存储方式,替换Session存储方式为LocalStorage方式 #I2AKUA -
Furion框架包描述文件,减少框架体积 #I2APAU -
App.CanBeScanTypes为App.EffectiveTypes#I2B0ZR -
App.ServiceProvider属性并移除App.GetDuplicateXXX方法 #I2CYZE -
Db.GetDuplicateDbContext为Db.GetNewDbContext#I2CZ04 -
Db.GetSqlDispatchProxy为Db.GetSqlProxy#I2DO9T -
Aop服务拦截器,支持异步、同步两种方式 #I2B9HQ - 网络请求所有功能 #I2BMR7
-
- 问题修复
-
Swagger规范化化结果不一致 bug #I2ACF3 - 数据库新增或更新忽略空值操作方法报空异常 #I2AB6C
-
Startup.csAop 全局拦截无效 #I2A7T2 -
Token过期后自动刷新Token无法获取最新的用户信息 bug #I2AWQI -
[ApiDescriptionSettings(Tag="xx")]导致swagger.json报错 bug #I2B47R -
Mysqlsql 数据库查询结果tinyint类型转换出错 bug #I2BEBM - 规范化结果多次包裹类型 bug #I2BHHZ
- 动态 Api 基元类型数组问题 #I2BMS5
-
sql查询枚举类型转换异常 bug #I2BS2Y -
string.SqlQuerizeAsync<T1>()扩展返回错误 bug #I2BSTS - 动态 Api 子类重写父类方法并取别名后
Swagger异常 bug #I2C9VP - 网络请求
application/json序列化大小写问题 #I2CRJC - 多数据库定位器实体嵌套关联 bug #I2CVN0
- 跨域响应头设置无效 bug #I2CW5T
- 远程网络请求代理打印到
MiniProfilerbug #I2CZBC - 远程请求响应拦截器 bug #I2D4DG
-
SqlSugar框架AsQueryable()一直追加参数 #I2DH1D - 自动刷新
Token空异常 bug #I2DO29 - 生成
JWT Token不传过期时间出现验证 401 bug #I2DO8L -
AppStartup排序无效 #I2DVD2 - 未启用多语言服务时友好异常和验证出现空异常 #I2ECUJ
- 数据校验字母和数字组合无法匹配 bug #I2EF2Q
- 数据校验手机或固话无效 bug #I2M5IZ
-
Dapper扩展解析SqlConnection异常 bug #I2M5P2 - 开启多语言后,
EF迁移异常 bug #I2M7DT -
IEntityTypeBuilder不支持多重继承 bug #I2PAOD -
JwtHandler设置自动刷新后,匿名访问无法通过 bug #I2SDOX -
Dapper扩展中SqlServer数据库获取连接对象类型 bug #PR159
-
- 其他更改
- 文档变化
- 问答答疑
- 跨域设置无效 #I2ASNJ
-
MVC视图无效,原因是.cshtml文件没有设置为内容#I2AXUU -
Sql操作可以实现事务吗?#I2B0NX -
IRepository操作数据库会打开多次数据库连接 #I2BB7B - 如何进入自定义
AppAuthorizeHandler断点 #I2BGXY -
SqlSugar注入问题 #I2C2AQ - 建议增加 API 签名验证,时效验证 #I2C6ET
- 多数据库多租户同时使用
Add-Migration报错 #I2CEHS -
ISqlSugarRepository没有Getxxx方法 #I2CJLZ -
cli.ps1如何将sql里的表导出成model类 #I2CSUL - 手动修改
Swagger终结点路径无效 #I2D608 -
DefaultDbContext不能识别 #I2DCZX - 各分层项目
Startup.cs支持Configuration#I2DDUP -
Aop无法拦截,无效 #I2DEY8 -
mysql执行Add-Migration报错 #I2DSB8\ -
Entity创建时间和是否删除添加默认值 #I2E04H -
swagger中多个servers设置 #I2E0IF - 全局筛选器 没有执行 #I2E5R4
- 多数据库定位器疑问 #I2E77T
-
cli.ps逆向工程Mysql数据库报错 #I2E7I5 -
Swagger开发环境applicationsettings.json中文乱码 #I2EAG1 - 增加指定路径程序集映射 #I2EEO2
- 动态编译
cs脚本文件 #I2EH66 - 自定义中间件,返回的错误没有规范化结果 #I2NV8S
-
Swagger循环引用设置生成文档层级无效 #I2PLQQ - 配置文件支持
yaml文件吗? #I2TJ3N - 修改数据库未
mysql执行Add-Migration报错 #I2VR64 - 多数据库使用定位器时报错 #I2VR8F
-
Migration To Oracle异常 #I2WBYQ - 开发时显示
Swagger,上线时关闭Swagger,这需要怎么配置 #I2WOYV - 兼容 Mvc 复杂验证没有试验成功 #I2X3GV
-
Aop能不能支持无接口的类 #I2X8AS - 关于
JWT Token自动刷新问题 #I2YD4K - 能否增加一个扩展的
Entity,增加一些扩展的属性 #I2YDKT -
Furion无法还原包,使用NuGet下载和通过最新的的脚手架下载都提示这个问题 #I30446 - 复杂校验与特性验证不能并行 #I3046U
v1.7.0(已发布)
- 新特性
-
Furion.Extras.ObjectMapper.Mapster扩展包 #I29LSJ -
Furion.Extras.Logging.Serilog扩展包 #I2AAN8 -
Furion.Extras.Web.HttpContext扩展包 #I29LSM - 内置
Token刷新机制支持 #I29K57 - 动态数据库上下文,支持运行时执行
OnModelCreating#I28UDT - 支持依赖注入排除指定接口 #I29693
- 规范化结果返回时间戳字段 #I29697
- 基础
CURD父类操作例子 #I296SR -
sql.Change("定位器完整类型名称")支持 #I29LAB -
UpdateInclude和UpdateExclude忽略空参数支持 #I29VUG - 数据库上下文内置假删除查询过滤器支持 #I29Y2R
- 忽略空值排除默认时间格式 #I29VUV
-
MiniProfiler组件 #I297R9
-
- 突破性变化
-
AppAuthorizeHandler授权管道为异步处理 #I29MD9 -
Swagger默认启用JWT授权支持 #I29LI4 -
HttpContextUtilities名称改为HttpContextLocal#I29KQE -
UnifyResultContext名称改为UnifyContext#I29LLZ - 只有执行迁移命令才扫描种子数据 #I29E6P
- 规范化结果
Successed属性名为Succeeded#I29NMV -
Mapster对象组件,采用提供扩展方式 #I29D2M -
CacheManager扩展类 #I29LU1 -
SaveChanges拦截器 #I292LO
-
- 问题修复
- 未注册的数据库上下文也被引用全局查询拦截器 bug #I29ZXJ
- 手动返回
BadObjectResult或ValidationProblemDetails结果类型时规范化结果失效 bug #I29ZU9 - 动态 WebApi
KeepName,KeepVerb、SplitCamelCase无效 bug #I29X90 -
Sql代理返回元组类型出错 bug #I29SMV -
401,403状态码规范化返回值属性变大写 bug #I29M8Y -
HttpContext空异常 bug #I29LU4 - 接口无返回值没有应用规范化结果 bug #I29GT7
- 前端
Less配置文件导致主机启动失败 bug #I29E7P - 执行
sql结果转泛型后属性重复赋值 bug #I29BUO -
Swagger关闭MiniProfiler之后组中组失效 #I29789 - 未启用规范化结果时异常返回
System.Object字符 #I2969A - 正数数据验证 0 也验证通过 bug #I2955T
- 非泛型类集成泛型接口依赖注入 bug #I294YT
-
Swagger不支持new覆盖父类的 bug #I28Z1A -
JsonSerializerUtility没有公开 bug #I28WMI -
SqlSugar扩展查询泛型类型注册异常 bug #I28VMT -
Furion Tools不支持生成不同命名空间的实体 bug #I2A175 - 全局拦截器无效 bug #I2A7T2
- 新增或更新忽略空值空异常 bug #I2AB6C
- 其他更改
-
Token生成加密算法 #I29KIH
-
- 文档变化
- 日志文档 #I28Y9D
- 数据库上下文、实体拦截器、配置、一分钟入门等等文档
- 问答答疑
v1.4.0(已发布)
- 新特性
-
Furion支持二级虚拟目录部署功能 #I28B77 -
Furion.Template.RazorWithWebApi脚手架 #I28QGI -
Furion.Template.BlazorWithWebApi脚手架 #I27Z3O -
EFCore时态查询扩展 #I28AJ -
[AppDbContext(连接字符串,数据库类型)]配置支持 #I28QTB -
DateTimeOffset转DateTime扩展方法 #I27MQA -
ValidationTypes验证正则表达式智能提示 #I2801V -
ValiationTypes.WordWithNumber验证 #I2805 - 获取客户端和服务端 IP 地址 #I28QV9
-
- 突破性变化
- 问题修复
- 多数据库上下文配置定位器后实体无法正确生成 bug #I2888L
- 多租户数据库上下文实体生成 bug #I2891G
- 对象验证失败提示消息没有应用
JSON大小写配置 bug #I27UTX - 仓储
Insert或Update方法指定ignoreNullValues无效 bug #I27UN6 -
Controller派生类如果贴了[Route]特性后出现在Swagger中 bug #I27TN7 -
SqlScalar执行sql返回Nullable类型出现转换失败 bug #I27S2N -
[UnitOfWork]特性异常 bug #I27MLM -
sql静态执行方式和sql高级代理无法监听数据库连接状态 bug #I27M4F - 更换 Json 序列化库无效 bug,如替换为
Microsoft.AspNetCore.Mvc.NewtonsoftJson#I27M43 -
Furion Tools工具生成模型 bug #I27XI5 - 软删除没有生效 bug #I2804I
-
Furion Tools识别带多个\\的连接字符串识别 bug #I280TS,#PR91 -
Furion Tools无法取消生成 bug #I2816M -
DateTimeOffset转本地时间差 8 小时 bug #I28BA9 - 启用
bundle js&css压缩后启动异常 bug #I28KR -
ValidationTypes.Required无效 bug #PR98 - 规范化结果
OnValidateFailed参数名拼写错误 bug #PR93,#PR92 - 授权管道验证失败还显示结果 bug #PR89
- 其他更改
- 文档变化
- 问答答疑
v1.2.0(已发布)
- 新特性
- 雪花算法 #I26OXG, #PR78
-
[AppDbContext]配置数据库提供器支持 #I27G3T - 实体表数据更改监听接口
IEntityDataChangedListener#I278DD, #I278LQ - 全局服务接口 AOP 拦截功能 #I278CP
- 定位器仓储
IDbRepository<TDbContextLocator>#I276Q3 - 数据库操作
InsertOrUpdate支持排除空字符串功能 #I272OG - 数据库操作
UpdateInclude和UpdateExclude匿名对象支持 #I271X0 - 数据验证传入空对象跳过验证支持 #I273R4
- 应用启动时支持排除特定配置文件自动加载 #I26U0A
- 单个实体表名前缀支持 #I26LX0
-
MySql数据库自动配置默认版本号 #I26XQ6 - 授权处理程序代码
- 突破性变化
- 问题修复
- 视图引擎加载外部程序集出错 bug
- 依赖注入代理接口报空对象异常 bug
-
EFCore取消附加实体出错 bug - 数据库仓储在非 Web 请求下出现空异常 bug
- 多个授权策略共存问题出现无效 bug
- 友好异常
Oop.Oh不支持普通方法 bug - 获取多租户对象时数据库上下文出现作用域验证失败 bug
- 工作单元不支持
Sql代理拦截 bug #I27GST
- 文档变化
- 实体数据监听器 文档
- 一分钟入门、应用启动、官方脚手架、数据库操作指南、对象映射、规范化文档、异常处理、鉴权授权文档
v1.1.0(已发布)
- 新特性
-
Db.GetDbContext()获取默认数据库上下文方法 -
HttpContextUtility.GetCurrentHttpContext()获取全局HttpContext上下文 -
App.GetRequiredService<>解析服务方法 -
object.GetService<>对象扩展方法 - 策略授权
PolicyPipeline基类方法,支持多重判断授权 -
JWTEncryption.ValidateJwtBearerToken手动验证静态方法 - 全局数据库上下文
InsertOrUpdateIgnoreNullValues和EnabledEntityStateTracked全局配置 -
Swagger Jwt授权全局授权参数 #I26GLR -
InsertOrUpdate支持自定义判断条件功能 #I269Q1 - 字符串字段小写命名支持 #I2695D
- 字符串文本对比功能 #I268LE
- 全局异常特性消息功能 #I2662O
-
Insert或Update数据库忽略空值功能 #I264Q4
-
- 突破性变化
-
Fur项目名为Furion -
Db.GetRequestDbContext<>()命名为Db.GetDbContext<>() -
Db.GetDbContext<>()命名为Db.GetDuplicateDbContext<>() -
App.GetService<>解析服务的底层逻辑,大大提高了解析服务的性能 - 授权核心代码,保持和微软一致的授权规范 #I26DCB
-
App.GetRequestService<>方法 -
ValidateJwtBearerJwt 授权方法,无需手动判断了
-
- 问题修复
- Furion 官方脚手架生成后编译异常 bug
-
Tenant内置属性不是virtual修饰 bug -
dockerfile新命名构建失败 bug - 自定义角色授权和多个授权共存出现 403 bug #I26H1L
-
httpContext.GetEndpoint()空异常 bug #PR73 -
Oops.Oh空异常和不支持服务抛异常 bug #I26EFU,#I26GM4 -
cli.ps生成文件编码乱码 bug #I26DVT -
Swagger文件上传按钮不显示 #I26B6U - 规范化结果授权状态码序列化大小写不一致问题 #I26B26
- 未启用规范化结果时中文乱码 bug #I268T5
-
MySql异步异常捕获不到 bug #I265SO -
cli.ps1提示找不到数据库连接字符串 bug #I2647U
- 其他更改
- 代码性能小优化和小调整
- 文档变化
- 一分钟入门、安全鉴权、数据库等文档
v1.0.3(已发布)
- 新特性
- Mvc 模板脚手架:
Fur.Template.Mvc - WebApi 模板:
Fur.Template.Api - Mvc/WebApi 模板:
Fur.Template.App - Razar Pages 模板:
Fur.Template.Razor - Blazor 模板:
Fur.Template.Blazor
- Mvc 模板脚手架:
- 突破性变化
-
PagedList到System.Collections.Generic命名空间下 - 解析服务性能问题,底层代码大量优化
-
- 问题修复
- 文档变化
- 入门文档、数据库上下文文档、多数据库操作文档
v1.0.2(已发布)
- 新特性
- 突破性变化
-
Mapster包至7.0.0版 -
App.Services名为App.ServiceProvider -
App.ApplicationServices和App.GetRequestService<>() - 非 Web 主机注入扩展
-
- 问题修复
- 其他更改
-
EntityBase和Entity所有属性为vitural修饰 -
Jwt读取和解析性能 - 优化代码支持 C# 9.0 最新语法
-
MD5加密性能 #PR71 - 无用或未使用代码
-
- 文档
- 数据库上下文、多数据库、一分钟入门文档
v1.0.0(已发布,.NET5)
- 新特性
- 网络请求
RemoteRequest组件 #I1YYWD -
.AddInjectBase()注入,只包含基础服务注入 - 所有服务都支持
IServiceCollection和IMvcBuilder注入 - 抛异常状态码设置功能
StatusCode -
Swagger序列化支持Pascal属性命名方式
- 网络请求
- 突破性变化
- 所有的包为
.NET 5正式版
- 所有的包为
- 问题修复
-
SqlProxy代理异步处理 bug - 数据库类型
Datetime转DateTimeOffsetbug - 属性首字母大小写序列化不匹配出现
nullbug - 对象序列化中文出现乱码 bug
- 默认序列化配置无效 bug
- 数据库非依赖注入方式提交无效 bug
- 应用程序池提交所有
DbContext空异常 bug -
Saas多租户Tenant类型字符串属性在MySql数据库下出现longtext类型 bug -
Mvc自动验证字符串空值 bug #I24M2T - 枚举注释被覆盖 bug #I24N6J
- 忽略规范化结果无效 bug #I24B8P
-
Swagger默认ContentType不是applicaiton/jsonbug #I24F3U - 内置
System.Text.Json和Newtonsoft.Json冲突 bug #I24F3U
-
- 其他更改
-
Fur框架域名为:https://furion.net - 仓储
FromSqlRaw和FromSqlInterpolated接口位置 - 数据加解密性能,#PR70
-
- 文档
- README.md、框架介绍、数据库上下文、配置选项、多租户、跨域文档