OSharp Versions Save

OSharp是一个基于.Net6.0的快速开发框架,框架对 AspNetCore 的配置、依赖注入、日志、缓存、实体框架、Mvc(WebApi)、身份认证、功能权限、数据权限等模块进行更高一级的自动化封装,并规范了一套业务实现的代码结构与操作流程,使 .Net 框架更易于应用到实际项目开发中。

7.0.11-snow

7 months ago

此更新包含 109 commits ,此大版本关闭了 2 issues

🔨 Features

wip: (di) 更新IServiceProvider.BeginUnitOfWorkTransaction扩展方法,支持返回值 wip: (di) 将部分IServiceProvider.GetService更改为更严谨的IServiceProvider.GetRequiredService wip: (identity) 登录失败也提交事务 wip: (auth) 统一 Module/Role/User模块的ReadFunctions功能 wip: (ex) 移除异常中间件JsonExceptionHandlerMiddleware,有异常直接返回给前端,由前端捕捉 wip: (handfire) handfile使用新的API实现,停用弃用API wip: (ui) 配合vue前端更新vue/view生成模板 wip (utils): 将Utils从OSharp.Core项目中提取到OSharp.Utils wip: 使用global using 优化项目代码和命名空间 wip: (efcore) snow: 将实体主键改为雪花算法 #287 wip: 添加MvcOptions.IsLongToStringConvert选项,用于控制json序列化时是否将long类型转换为string类型 wip: (auth) 实体属性信息Json字符串如果数据库字段太多的话,5000会不够 docs: 将osharp-docs项目添加到osharp/docs中 docs: 使用awesome-pages插件整理文档中心的导航菜单 docs: 使用docker方式发布osharp.docs test: 使用OperatingSystem.IsWindows()方式来判断windows平台的测试用例 ci: 添加workflow_dispatch以支持手动执行

🐛 Bugs

bug: (efcore) 修复提交事务后,工作单元和数据上下文无法重用的问题 #283 bug: (efcore) 修复数据库初始化迁移记录数据表错误的问题 bug: (auth) 修复模块Module删除功能刷新权限id指向不正确的问题 bug: (entity) 修复通过Dto插入实体类之后Dto.Id没有新增实体Id值的问题 fix: 修复WebApi引用7.0MySql,Oracle的问题

v6.0.4

2 years ago

此更新包含 62 commits ,此大版本关闭了 5 issues

🔨 Features

  • wip(efcore): 补全批量更新删除的事务提交
  • wip(efcore): Repository.Insert(dtos) 方法在插入数据成功之后,返回新的entity.Id到dto.Id
  • ci: 添加github同步到gitee的action工作流github2gitee.yml
  • feat(net): 添加基于MailKit的邮件发送实现
  • feat(api): 统一所有获取数据的API返回AjaxResult结果类型
  • feat(api): 使用 Lazy.Captcha.Core 实现图片验证码
  • wip(auth): FunctionOutputDto 添加 IsSlaveDatabase
  • wip(gen): 给代码生成器的属性元数据添加IsEnum来标记数据类型为枚举的实体属性
  • wip(gen): vue代码生成模板的route添加ACL权限控制
  • wip(gen): 更新代码生成器Vue模板
  • wip(gen): 代码生成器实体属性添加Listable属性,用于控制是否在列表中展示
  • wip(gen): vue模板添加枚举类型编辑的支持
  • wip(gen): 代码生成器实体属性添加IsHide属性,用于控制在列表中是否默认隐藏属性
  • sample(wpf): 添加代码生成器的WPF示例项目

⚡️ Breaked Changes

  • break(wpf): 移除Vue的Store代码模板
  • break(ui): 移除ng-alain项目

🐛 Bugs

  • bug(efcore): KeyValue的Key最大长度更改为512,修复mysql创建数据库失败的问题
  • bug(identity): 修复注册时填写了用户名还使用Email的问题
  • bug(identity): 修复OnlineUserProvider中移除过期RefreshToken事务冲突锁死的问题
  • bug(identity): 修复在Scoped生命周期服务中使用CreateScope导致事务冲突锁死的问题
  • bug(identity): 修复用户登录提示数据库链接关闭的问题 #280

6.0.0

2 years ago

此更新包含 68 commits ,此大版本关闭了 4 issues

? Features

feat(auth): 将数据权限重构为独立服务IDataAuthService #233 feat(efcore): 给初始化种子基类SeedDataInitializerBase的SeedData添加 ScopedProvider,方便在构建种子数据时拉取需要的父数据 #231 feat(efcore): long类型主键添加0值检查,方便自定义赋Id值,而不使用雪花算法生成 feat: (filter) FilterRule.IsLowerCaseToUpperCase 默认值为true feat(util): 将项交换扩展方法Swap的集合类型改为IList<T> feat(util): 添加集合项上移SwapUp、下移SwapDown快速操作扩展方法 feat(cache): 添加批量移除缓存项扩展方法 feat(mvc): 添加MvcOptions,用于控制JSON输出属性大小写控制 feat(mvc): OSharp:Mvc:IsLowercaseUrls配置节点默认值改为false,即MVC的URL默认不小写 feat(wpf): Wpf项目添加一些常用样式 feat: (filter) FilterRule.IsLowerCaseToUpperCase 默认值为true 在public.props中使用<GenerateDocumentationFile>true</GenerateDocumentationFile> 代替各个.csproj文件中的xml生成配置 sdk(net6): 使用WebApplication改写AspOsharpPack及其派生类 nuget: 将nuget程序包的前缀由OSharpNS更改为OSharp sdk(net6): 整体修复项目中的各种警告问题 sample(wpf): 添加代码生成器的WPF示例项目

⚡️ Breaked Changes

refactor(auth): 将IAccessClaimsProvider更名为IUserClaimsProvider break(cache): 移除IQueryable<T>相关的缓存扩展方法,相应功能转移到 ICacheService 中 break(efcore): 给 Repository 添加事务提交,确保只有一层事务的时候,未主动开启事务的情况下能提交事务 change(efcore): 添加实体的字符串长度配置 change(systems): 更改KeyValue的缓存方式,整体缓存改为颗粒缓存

? Bugs

fix(auth): 修复角色初始化数据不保存的问题 fix(auth): 修复新建数据库时如果Hash缓存存在,不同步Function数据的问题 fix(efcore): 修复数据权限未启用时报_dataAuthService空异常的问题 fix(mapper): 修复automapper的如果有MapFromAttribute和实现IAutoMapperConfiguration,后者会配置会失效的问题 #109 fix(automapper): 重构AutoMapper模块,解决复杂映射配置优先级低的问题 #230 #109 fix(mvc): 修复Mvc提取Function会提取属性方法的问题 fix(mvc): 修复[UnitOfWork]在并发的情况下提交事务错误的问题 fix(mvc): 修复审计功能不记录操作审计的问题

v6.0.0

2 years ago

此更新包含 68 commits ,此大版本关闭了 4 issues

🔨 Features

  • feat(auth): 将数据权限重构为独立服务IDataAuthService #233
  • feat(efcore): 给初始化种子基类SeedDataInitializerBase的SeedData添加 ScopedProvider,方便在构建种子数据时拉取需要的父数据 #231
  • feat(efcore): long类型主键添加0值检查,方便自定义赋Id值,而不使用雪花算法生成
  • feat: (filter) FilterRule.IsLowerCaseToUpperCase 默认值为true
  • feat(util): 将项交换扩展方法Swap的集合类型改为IList<T>
  • feat(util): 添加集合项上移SwapUp、下移SwapDown快速操作扩展方法
  • feat(cache): 添加批量移除缓存项扩展方法
  • feat(mvc): 添加MvcOptions,用于控制JSON输出属性大小写控制
  • feat(mvc): OSharp:Mvc:IsLowercaseUrls配置节点默认值改为false,即MVC的URL默认不小写
  • feat(wpf): Wpf项目添加一些常用样式
  • feat: (filter) FilterRule.IsLowerCaseToUpperCase 默认值为true
  • 在public.props中使用<GenerateDocumentationFile>true</GenerateDocumentationFile> 代替各个.csproj文件中的xml生成配置
  • sdk(net6): 使用WebApplication改写AspOsharpPack及其派生类
  • nuget: 将nuget程序包的前缀由OSharpNS更改为OSharp
  • sdk(net6): 整体修复项目中的各种警告问题
  • sample(wpf): 添加代码生成器的WPF示例项目

⚡️ Breaked Changes

  • refactor(auth): 将IAccessClaimsProvider更名为IUserClaimsProvider
  • break(cache): 移除IQueryable<T>相关的缓存扩展方法,相应功能转移到 ICacheService 中
  • break(efcore): 给 Repository 添加事务提交,确保只有一层事务的时候,未主动开启事务的情况下能提交事务
  • change(efcore): 添加实体的字符串长度配置
  • change(systems): 更改KeyValue的缓存方式,整体缓存改为颗粒缓存

🐛 Bugs

  • fix(auth): 修复角色初始化数据不保存的问题
  • fix(auth): 修复新建数据库时如果Hash缓存存在,不同步Function数据的问题
  • fix(efcore): 修复数据权限未启用时报_dataAuthService空异常的问题
  • fix(mapper): 修复automapper的如果有MapFromAttribute和实现IAutoMapperConfiguration,后者会配置会失效的问题 #109
  • fix(automapper): 重构AutoMapper模块,解决复杂映射配置优先级低的问题 #230 #109
  • fix(mvc): 修复Mvc提取Function会提取属性方法的问题
  • fix(mvc): 修复[UnitOfWork]在并发的情况下提交事务错误的问题
  • fix(mvc): 修复审计功能不记录操作审计的问题

v5.0.4

3 years ago

此更新包含 68 commits ,此大版本关闭了 14 issues

🔨 Features

  • (sdk): 将sdk升级到 .net5.04,.netcoreapp3.1.13
  • (util): IVerifyCodeService.SetCode 验证码添加过期时间支持 #209
  • (util): 添加object.Validate扩展方法,验证对象的属性的ValidationAttribute特性
  • (util): 新增汉字转拼音转换类 OSharp.Data.PinyinConverter
  • (core): 建立一个程序集管理缓存,便于快速查找需要的类型 #135
  • (efcore): 修复IUpdateAudited不更新LastUpdatedTime的问题
  • (efcore): DbContextOptionsBuilder 数据库驱动差异处理器支持自定义配置注入 #211
  • (efcore): 定义新接口IEntityBatchConfiguration,用于接管实体注册时的批量配置 #212
  • (efcore): 基于 #212 的改进,对实体时间属性UTC持久化功能进行重构 #159
  • (efcore): 生成数据库时将属性[DisplayName]特性的值添加到表字段的描述信息中 #213 #212
  • (efcore): 添加数据上下文配置节点的正确性检测与报错
  • (efcore): 添加主从分离配置选项,添加数据库配置信息验证
  • (efcore): Function添加IsSlaveDatabase开关属性,用于从Function配置只读业务是否走从数据库 #217
  • (efcore): 添加随机、顺序、滑动权重三个从数据库选择策略,默认为平滑加权策略 #217
  • (efcore): 更新数据上下文节点,添加从数据库节点配置示例,主从分离功能实现完毕 #217
  • (auth): DependOnFunction函数中的参数Controller值可去掉后缀Controller方便使用nameof #149
  • (auth): 用户登录之后,使用FunctionAuthCacheRefreshEvent事件刷新用户功能权限
  • (auth): 优化AuthController.GetAuthInfo方法的实现 #227
  • (admin): 添加LoginLog业务实现
  • (build): 添加nuget发布脚本

⚡️ Breaked Changes

  • (eventbus): 去除EventBus中事件发布的wait参数,需要非阻塞时应该在handler中处理 #208
  • (efcore): IUnitOfWork增加查看是否启用事务的属性IsEnabledTransaction
  • (efcore): 简化UnitOfWork的设计,整合UnitOfWorkManager #215
  • (auth): 将角色功能权限、用户功能权限的缓存有效期由无限期改为7±1天
  • (efcore): 调整IServiceCollection.AddOsharpDbContext<TDbContext>()的执行位置 #225

🐛 Bugs

  • (auth): 修复IFunctionHandler未启用时获取当前正在执行功能GetExecuteFunction无法继续执行的问题
  • (efcore): 修复KeyValue默认的实体配置缺失的问题
  • (auth): 修复当功能的角色数为0时不创建“功能-角色”缓存的问题
  • (mvc): 修复查找 MvcFunction 时基类中的Action无法被找到的问题
  • (mvc): 修复Controller-Action提取Function不完全的问题

v5.0.3

3 years ago

此更新包含 63 commits ,此大版本关闭了 7 issues

🔨 Features

  • (sdk) 使用多目标框架的方式引入.net 5.0.3,更新.net 3.1的sdk到.net core 3.1.12
  • (build) 使用PowerShell改写nuget脚本
  • (util) 添加一些TimeSpan , IEnumerable扩展方法,添加集合项位置交换的扩展方法Swap
  • (util) osharp.core添加雪花算法
  • (eventbus) 由于存在事务嵌套问题,EventBus无法在独立Scope中执行,EventBus模块恢复 IHybridServiceScopeFactory #199
  • (efcore) 修改CheckICreationAudited/CheckIUpdateAudited的操作时间值仅在没有赋值的情况下才进行赋值 #189
  • (efcore) 添加IKeyGeneratorISequentialGuidGenerator接口,用于实体主键数据的生成
  • (efcore) 添加实体主键类型生成器,默认int为自增,long为雪花算法,guid根据数据库类型生成有序guid
  • (aspnet) 添加Api跨域配置信息的JSON配置节点支持 #186
  • (swagger) Swagger模块添加 IsHideSchemas 配置节点,用于控制是否隐藏 Schemas 节点
  • (identity) 添加[SiteAuthorize],[ApiAuthorize],用于站点和API的授权拦截,应用OsharpPolicy授权策略
  • (identity) 在Token验证通过之后,添加对clientId进行验证,解决用户登出之后 AccessToken 仍然能验证通过的问题
  • (wpf) 增加一些WPF的Converter
  • (admin) 添加菜单Menu管理模块

⚡️ Breaked Changes

  • (sdk) 将原先.net standard2.1的类库降为.net standard2.0

🐛 Bugs

  • (util) 修复集合为空时Random.NextItem出错的问题
  • (swagger) Swagger集成MiniProfiler功能Bug,修复swagger中miniprofiler不生效的问题 #195
  • (wpf) 添加Wpf.Xaml的PopupHelper辅助类,用于解决Popup不跟随窗口的问题
  • (identity) 修复3.1.7登录后无权限的问题,处理流程中尽可能的使用异步API
  • (build)修复打包时提示iconUrl警告的问题

v3.1.7

3 years ago

此更新包含 114 commits ,此大版本关闭了 8 issues

🔨 Features

  • (core) 更新 .netcore 到 v3.1.7
  • (logging) 添加StartupLogger,用于暂存日志组件启用前的日志信息
  • (logging) 添加框架启动时底层服务及各个Pack服务的调试日志 #178
  • (core) OsharpBuilder 添加自动加载所有Pack功能,简化系统初始化流程 #177
  • (core) OsharpBuilder 添加配置信息IConfiguration和日志ILogging服务检测,如没初始化则添加相应服务,添加OsharpOptions初始化
  • (dependency) 将IHybridServiceScopeFactory和IServiceScopeFactory解除继承,方便控制不同的服务实现
  • (entity) 给实体的DateTime类型属性添加UTC存储支持 #159
  • (entity) 使用 Oracle.EntityFrameworkCore 恢复 Oracle 数据库的支持,未测试
  • (eventbus) 将EventBus模块的IHybridServiceScopeFactory改为IServiceScopeFactory,将EventBus的Handler的创建独立Scope执行,并主动提交事务
  • (ut) 更改CodeRamer和CodeTimer的测试代码
  • (ut) 添加Audit单元测试,Authorization 部分单元测试
  • (identity) 添加 ServiceProvider 的扩展方法 GetOnlineUser
  • (identity) 支持jwt和cookie两种身份认证混用
  • (swagger) 重新启用配置文件的Enabled,以便在开发版本和发布版本控制是否启用Swagger
  • (swagger) Swagger支持分组,隐藏API,路由前缀配置 #147
  • (wpf) 添加Wpf的Stylet的IServiceProvider支持
  • (nuget) 使用SourceLink解决引用nuget版本时不方便源码调试的问题 #183
  • (ngalain) 修改过滤规则组件。当用户类型时,只有一个选项,nzMode属性不需要使用"tags"。使用tags后,有可能会出错。#153
  • (layui) 引入monent实现前端时间格式化

⚡️ Breaked Changes

  • (dependency) 简化新建ServiceScope的扩展方法执行模型,移除对当前RequestScope的引用
  • (entity) 重构数据迁移上下文提供器IDesignTimeDbContextFactory<TDbContext>接口的实现 #180
  • (auth) 将IFunctionAuthCache.BuildRoleCaches从DataAuthorizationPack转移到FunctionAuthorizationPack,这是功能权限的业务
  • (api) 将ApiController相关基类更改为ApiControllerBase
  • (api) 添加OSharp.Hosting.Core,OSharp.Hosting.EntityConfiguration,OSharp.Hosting.Apis三个项目,封装框架顶层的非业务代码

🐛 Bugs

  • (core) 修复将JS时间格式的数值转换为时间判断逻辑错误的问题 #161
  • (entity) 修复ISeedDataInitializer 未做上下文归类,无法进行多上下文种子数据分别初始化 的问题 #179
  • (caching) 修复OutputDto实现了IDataAuthEnabled的情况下ToCacheArray,ToCacheList缓存键生成出错的问题 #176
  • (auth) 修复 endpoint.GetExecuteFunction 获取Area不正确的问题
  • (eventbus) 修复事件处理器的异常记录后不重新抛出的问题 #124
  • (logging) 解决linux下log文件不在log目录下的问题 #146
  • (ut) 修复时间的时区问题导致测试在github不通过的问题
  • (ngalain) 修正高级搜索时,filterIndex属性不起作用的问题 #152

v3.1.2

4 years ago

此更新包含 38 commits ,此大版本关闭了 14 issues

🔨 Features

  • (core) 添加基类Disposable,统一实现 IDisposable 接口的实现
  • (entity) 生成符合各个数据库的有序Guid #142
  • (entity) 添加数据审计时可以忽略某些不需要审计或者敏感的实体属性的功能 #143 #64
  • (entity) 给Repository添加 InsertOrUpdate 方法 #133
  • (entity) 添加快速执行UnitOfWork事务的扩展方法
  • (entity) 给实体映射项目EntityConfiguration添加分部类partial支持 #140
  • (pack) 整理各个Pack之间的依赖关系及启动顺序
  • (pack) 各个Pack是否启用已更改为手动Add,因而Enabled开关已不需要,移除appsetting.json配置文件中各Pack的Enabled配置项
  • (cache) 缓存项的key格式使用冒号:分隔,使之在redis下生成文件夹展现模式
  • (redis) 增加 Redis 操作客户端
  • (alain) 将ng-alain升级到 v8.9 ,#131

⚡️ Breaked Changes

  • (entity)种子数据初始化方式由HasData方式更改统一接口初始化 #132
  • (entity) 移除所有EntityConfiguration中的种子数据,转移到相应的ISeedDataInitializer实现类进行种子数据初始
  • (identity) 从IdentityPack将AuthenticationPack拆分出来
  • (mvc) 无区域的Controller类,需继承统一基类 SiteApiController,以提供授权控制
  • (pack) 移除PackManager相关类型,取消Pack自动加载机制,改为按需要手动加载各个Pack
  • (dependency) 尽量减少DependencyAttribute特性在框架级别的使用,改为在Pack中显式加载服务,明确各个模块要加载的服务

🐛 Bugs

  • (entity) 修复种子数据问题导致mssql下无法运行的问题
  • (logging) 修复 ApplicationBuilderExtensions 不记录日志的问题
  • (email) 修复邮件发送不成功的问题
  • (func) 修复Action标记[NonFunctionAttribute]不起作用的问题 #134

v3.1.2-preview3.01

4 years ago

此更新包含 3 commits

🔨 Features

  • (identity) 给RefreshToken增加滑动过期选项 #129
  • (entity) 将Microsoft.EntityFrameworkCore.Tools的引用从OSharp.EntityFrameworkCore转换到hosting项目
  • (ngalain) 将前端security模块重命名为auth,以适应后端模块命名变更

3.1.2-preview2.27

4 years ago

此版本包含 15 commits

🔨 Features

  • entity: 添加给EF生成表添加表名前缀的功能,需要在实体类上标注 TableNamePrefixAttribute 特性提供前缀
  • identity: OnlineUser创建时,读取用户的UserClaim表的数据存储到 onlineUser.ExtendData中

⚡️ Breaked Changes

  • core: 移除所有.netcore 2.2的代码,此分支面向最新的.net sdk 版本进行发展
  • auth: 改写授权模块实现逻辑,由原来的Mvc-Filter模式更改为更符合.net core 3.x的Policy模式,此变更为破坏性更新
  • auth: 将功能授权相关类型由OSharp.Security命名空间移动到OSharp.Authorization命名空间
  • identity: 将IdentityPack中的公共逻辑提取到其IdentityPackBase基类中
  • auth: 将OSharp.Permissions拆分为OSharp.Identity和OSharp.Authorization.Functions+OSharp.Authorization.Datas三个项目,同时对原Security中的功能权限和数据权限进行Authorization的迁移 #128
  • auth: 功能权限和数据权限通常是分开使用的,将SecurityPack拆分为FunctionAuthorizationPack和DataAuthorizationPack #128
  • auth: 授权模块的前缀由Security更改为Auth,前端url中security更改为auth #128