FreeSql

🦄 .NET aot orm, C# orm, VB.NET orm, Mysql orm, Postgresql orm, SqlServer orm, Oracle orm, Sqlite orm, Firebird orm, 达梦 orm, 人大金仓 orm, 神通 orm, 翰高 orm, 南大通用 orm, 虚谷 orm, 国产 orm, Clickhouse orm, QuestDB orm, MsAccess orm.

MIT License

Stars
3.9K
Committers
39

Bot releases are visible (Hide)

FreeSql - v3.2.686(该版本JsonMap 有 BUG,请升级)

Published by 2881099 almost 2 years ago

  • 增加 FreeSqlBuilder UseQuoteSqlName 设置不使用 [] `` "" 限定符号;
  • 增加 Aop.CommandBefore 设置 .CommandText = null 可拦截某次执行;
  • 增加 IAdo.ExecuteNonQuery 重载方法(虚谷数据库);
  • 修复 UseSlaveWeight 异步下可能无效的问题;#1382
  • 修复 HzyTuple 嵌套解析问题;#1390
  • 修复 AsType 表达式解析问题;#1389
  • 修复 pgsql OnConflictDoUpdate 临时主键问题;#1393
  • 修复 ClickHouse 联表查询 GLOBAL left join、Ado.Query * 问题;#1383
  • 优化 ClickHouse like 为 positionCaseInsensitive #1386
  • 优化 JsonMap 对基础类型的无效判断;#1385
  • 优化 IUpdate 批量 case when 同值的 SQL 生成;#1393
  • 优化 IAdo.ConnectionString 使用 UseConnectionFactory 时值为 NULL 的问题;
FreeSql - v3.2.685

Published by 2881099 almost 2 years ago

  • 增加 IUpdate<T> BulkCopy 批量更新扩展方法;(暂时支持 SqlServer/MySql/PostgreSQL)
  • 修复 ClickHouse CodeFirst 表结构同步问题;
  • 修复 ISelectGrouping ToSql AsProperty 别名无效问题;
  • 优化 UnitOfWork 与 ForUpdate 事务开启逻辑;
  • 优化 MySqlConnector MySqlDataTime 读取;
  • 优化 linq.dynamic Expression Invoke 解析;#1378
FreeSql - v3.2.684

Published by 2881099 almost 2 years ago

  • 修复 Firebird CodeFirst.SyncStructure 自增主键错误;(受影响版本 3.2.666-3.2.683)
  • 修复 Firebird [Index("{tablename}_Name" 分表索引名未处理的 bug;#1346
  • 修复 InsertDict DBNull.Value 值无法插入的问题;#1336
  • 修复 fsql.InsertOrUpdate SetSource(sql) 无效的 bug;
  • 优化 string[].Any(..) 表达式树解析;ReplaceParameterVisitor
  • 优化 ISelect<T1, T2> 对象 .LeftJoin<T2> 表别名;#1348
FreeSql - v3.2.683

Published by 2881099 almost 2 years ago

  • 修复 Repository/DbContext 同一实例执行报错后续无法再 CRUD;
  • 修复 UnitOfWorkManager + Repository.SaveMany 事务切换问题;
  • 修复 导航属性 PgArrayToMany 数组字段为空时的 bug;
  • 修复 导航属性 PgArrayToMany DTO 异步查询报错的 bug(同步方法正常);
  • 修复 SqlExt count/avg 开窗函数参数;#1321
  • 修复 Sqlite TimeSpan 类型映射错误;
  • 修复 Sqlite Attachs 多库索引 {tablename} 问题;
  • 修复 EndEdit 未触发 OnEntityChange;
  • 修复 fsql.InsertOrUpdate CanInsert=false,CanUpdate=true (mysql/pgsql)不生效的 bug;
  • 修复 聚合根仓储(实验) InsertOrUpdate 重复插入的 bug;
  • 修复 聚合根仓储(实验) Update 未更新自增状态管理的 bug;
  • 修复 SqlServer WithSql + WithLock bug;
  • 修复 ClickHouse Ado 参数化无效的问题;#1340
  • 修复 Odbc 自定义 N'' 无效;#1332
  • 修复 DbContext DbSet 属性初始并发时未触发 OnModelCreating;#1333
  • 修复 Utils.ReplaceSqlConstString bug;
  • 扩展 UseMessagePackMap 示例;
  • 优化 UpdateDict 支持 .IsVersion 乐观锁设置;
  • 优化 InsertDict DBNull.Value 值处理;#1336
  • 优化 表达式树解析 w => (w as TBase).Id;
  • 优化 导航属性集合 .Exists 效果与 .Any 相同;
  • 优化 MySql CodeFirst 判断表是否存在的查询语句性能;
  • 优化 SqlServer2005 TOP 1 查询;
  • 完善 SqlServer WithLock + WithIndex 扩展方法;
FreeSql - v3.2.682

Published by 2881099 about 2 years ago

  • 优化 人大金仓 KingbaseES 兼容 V8R3/V8R6;#931 #325
FreeSql - v3.2.681

Published by 2881099 about 2 years ago

  • 修复 3.2.666-3.2.680 子查询的特殊 bug;
  • 增加 fsql.Ado.QuerySingle(() => new {}) 扩展方法实现无表查询 SELECT now(), utc_timestamp()
  • 优化 min pool size 与 max pool size 连接串设置;
  • 优化 导航属性未配置关系先 Where 后 InnerJoin 的问题;
FreeSql - v3.2.680

Published by 2881099 about 2 years ago

  • 优化 WithTempQuery 多对象选择同别名问题; #1192
  • 修复 WithTempQuery + Column + GroupBy + Key 指定列名的问题;
  • 修复 GlobalFilter.ApplyIf + Repository.DataFilter.DisableAll 可能不生效的问题;
  • 修复 UpdateDict 不支持 SET NULL 的更新;#1257
  • 修复 ClickHuse DBFrist ExistsTable;
  • 增加 ClickHouse LimitBy/Sample 查询方法;
  • 增加 所有国产数据库支持 CustomMySql、CustomPostgreSQL、CustomOracle、CustomSqlServer 自定义适配;
  • 优化 DbSet/Repository 防止 Aop.AuditValue 触发两次;
  • 优化 表达式树解析为 NULL 的提示;
  • 优化 UseMappingPriority 与实体元数据逻辑;#1247
  • 优化 ServerTime 与 IUpdate.Set 指定更新的重复问题;#1251

v3.2.669

  • 修复 WithTempQuery + RereadSql 无别名的问题;
  • 修复 WithTempQuery + FromQuery + 子查询的 bug;
  • 修复 WithTempQuery + Column(Name 别名问题;
  • 优化 CheckAvailable retry 重试一次;
FreeSql - v3.2.666

Published by 2881099 about 2 years ago

这是一个长期稳定的版本,会持续一年时间只修 bug 不加新功能。

  • 增加 WithTempQuery + FromQuery 嵌套查询功能; #1192
  • 增加 FreeSql.Provider.OracleOledb 解决 US7ASCII 中文乱码问题;
  • 增加 UnionALL 联合查询; #1106 #1104 #668 #478 #432 #213 #138
  • 增加 WithMemory 基于内存查询,对标 WithSql;
  • 增加 AuditValue ObjectAuditBreak 实现对象只触发一次审计事件;
  • 增加 IncludeByPropertyName 重载 then 参数;#1214
  • 增加 IInsertOrUpdate.SetSource(sql) 重载方法;
  • 增加 DynamicFilterCustom 增加支持 Expression 返回值;
  • 修复 UseGenerateCommandParameterWithLambda(true) 与 GroupBy 查询不生效 bug;
  • 修复 ToList 子查询开启参数化重复参数的 bug;#1205
  • 修复 string[] JsonMap bug; #653
  • 修复 ManyToMany 不会触发 AsTable 的 bug;
  • 修复 Clickhouse Insert AsTable 表名处理 bug;
  • 修复 ClickHouse 单条记录插入\t \n /失败的 bug;
  • 修复 子查询使用基类 + AsType 可能产生的 bug;#1215
  • 修复 SqlServer2005/2008 Skip 问题(未设置 Take 时);
  • 修复 MySql/SqlServer DbFirst 获取字段位置的问题;
  • 修复 DbContext/Repository Primary decimal 状态管理 key 精度处理 bug;
  • 修复 DbContext/Repository 无构造函数的实体对象不跟踪问题;
  • 修复 ToSql AsProperty 大小别名问题;
  • 优化 IncludeByPropertyName + AsType;
  • 优化 字典crud TableInfo 合并规则;#1180
  • 优化 IUpdate.Set 字符串累加本身为 NULL 的情况;#1209
  • 优化 WhereDynamicFilter DateRange 情况;
  • 优化 Oracle IN :ids 值传入 IList 时报错;
  • 优化 Dameng 单独适配 netcore3.1;#1094
  • 优化 PrevReheatConnectionPool 预热;
  • 优化 全局过滤器禁用时子查询传播问题;#1208
  • 优化 子查询别名为 a 的情况;#1201

回顾 v3.2.xxx 重要更新内容

  • 增加 PgArrayToMany 专属导航属性;
  • 增加 DTO 映射非导航属性的子表查询 ToList,可直接返回集合;
  • 增加 InsertDict/UpdateDict/DeleteDict/InsertOrUpdateDict 针对字典的 CUD 方法;
  • 增加 [Table(AsTable = xx)] 自动分表特性,待完善;
  • 增加 DbSet/Repository DeleteCascadeByDatabase 级联删除(基于数据库);
  • 调整 pgsql10 自增映射使用 GENERATED BY DEFAULT AS IDENTITY,低版本仍然使用 serial;
  • 优化 导航集合属性访问,可省略 AsSelect;

更新了文档:联合查询、嵌套查询、工作单元事务、多库访问、多租户、分布式事务、动态操作
https://freesql.net/guide/

大家有空可以重新翻看一下文档,帮助提升工作效率。

文档有些细节,可能需要反复多看几次才能熟练运用。
如果可以,建议把特别关注的内容搬运到自己的博客空间,当做笔记。

3.2 大版本经历 6个月 迭代,正式发布 v3.2.666,这是一个长期稳定的版本,会持续一年时间只修 bug 不加新功能。
和 2.6.100 版本一样。

2.0 以上的版本,可以直接升级,没有破坏性变化。

感谢群管理员、热心群友给新人耐心解答!
感谢天上有木月大佬管理 freesql.net 官方文档!
感觉所有群友的信任,希望大家使用 FreeSql 共同创造价值,迎娶美好的老婆!

FreeSql - v3.2.665

Published by 2881099 over 2 years ago

  • 增加 IsVersion string 字符串乐观锁;#1178
  • 增加 IUpdate.SetSource ignoreVersion 参数可实现忽略乐观锁;#1161
  • 增加 IInsertOrUpdate.SetSource(items, tempPrimarys) 指定临时主键参数;#1160
  • 增加 DbContext/Repository 审计日志 ChangeInfo 增加属性 EntityType;
  • 修复 SqlServer WithLock 子查询不生效的 bug;#1159
  • 修复 AsTreeCte + AsTable 无效的 bug;#1176
  • 修复 UseGenerateCommandParameterWithLambda(true) 问题;#1173 #900
  • 修复 SetSource 临时主键重载方法 + Column 设置 Name 后无效的 bug;
  • 修复 Dto 映射查询 Negate 表达式解析 bug;
  • 修复 pgsql OldName + XML 注释迁移代码顺序问题;
  • 优化 string Contains 模糊查找 % 的情况;
FreeSql - v3.2.664

Published by 2881099 over 2 years ago

  • 修复 UseGenerateCommandParameterWithLambda 子查询并发 bug;#1155 (重要)
  • 修复 pgsql Dto 映射使用常量 false 转换失败;
  • 修复 IIF 三元表达式树解析 bool HasValue 问题;
  • 修复 MySqlConnector BulkCopy 映射顺序问题;
  • 优化 XML 注释读取支持 interface;
  • support provider、Extensions Exceptions 多语言
FreeSql - v3.2.662

Published by 2881099 over 2 years ago

  • 调整 pgsql10 自增映射使用 GENERATED BY DEFAULT AS IDENTITY,低版本仍然使用 serial;
  • 增加 PgArrayToMany 专属导航属性;#1145
  • 增加 ObservableCollection 级联加载和保存;
  • 优化 FluentApi 继承关系可直接 ConfigEntity 生效;#1144

  • 修复 达梦 min pool size 预热数量匹配 bug;
  • 修复 v3.2.620 - v3.2.661 子查询 sum/min/max/avg 默认加 isnull 防止为 NULL 情况,日期类型处理错误 #1140
  • 修复 AsTable 子查询未传播的问题;#1103
  • 修复 IncludeByPropertyName fromFirstTable 判断错误;#278
  • 修复 GroupBy 特殊情况下 AsProperty 无效的 bug;#1141
  • 修复 MySql CodeFirst OldName + Comment 迁移问题;#1147
  • 修复 pgsql DbFirst 未正确获取 Position 值;#1154
FreeSql - v3.2.661

Published by 2881099 over 2 years ago

  • 增加 UseMappingPriority 指定映射优先级;#387 #69 #99
  • 增加 AuditValueEventArgs Object 参数;#1128
  • 修复 pgsql varchar(120) CodeFirst 迁移不修改长度;
  • 修复 ISelect.InsertInto 未执行自动迁移;
  • 修复 UseCommandParameterWithLambda IN 参数化判断 的逻辑 bug;#1137
  • 优化 连接池不可用、定时检查;
  • 优化 Limit + Sum/Avg/Max/Min 为嵌套查询;
  • 优化 GroupBy Page 未排序的查询;#1126

关于映射优先级,Attribute > FluentApi > Aop,以前是觉得 Attribute 更直观,万一程序员不知道谁在哪里 fluentapi 设置了 TableName,也不至于查不到原因,跑来群里质问。

又会有新的问题,举例,如果设置了 Table(Name = xxx
再使用 fsql.Aop.ConfigEntity 修改表名映射就无效了

现在可以通过 UseMappingPriority(Aop, FluentApi, Attribute) 来更改优先级,解决上述问题

FreeSql - v3.2.651

Published by 2881099 over 2 years ago

  • 增加 DTO 映射非导航属性的子表查询 ToList,可直接返回集合;
  • 增加 Array.Any(x => x.id == a.Id && ..) 表达式树解析;#243
  • 增加 pgsql numeric -> BigInteger 映射;#1100
  • 增加 1108 Exception 国际化;
  • 增加 DynamicFilterCustom 参数 object sender;#1113

  • 修复 Oracle AsTable 分表嵌套 SQL 拼错错误;#1098
  • 修复 AsTable ManyToMany IncludeMany 无效的问题;#1103
  • 修复 AsTable 分表 ToAggregate 无法得到汇总;#1115
  • 修复 Repository.DataFilter 对 GlobalFilter 控制无效的 bug;#1028 #846
  • 修复 IN 查询区分 varchar/nvarchar;
  • 修复 Oracle clob 参数化类型设置问题;#1116
  • 修复 MySql 子查询 Enum MapType(int) 表达式判断解析 bug;#1118

  • 优化 AsTable 自动分表 Where Equal 判断;#1104
  • 优化 子查询 sum/min/max/avg 默认加 isnull 防止为 NULL 情况;
  • 优化 EnableCascadeSave 级联保存执行逻辑,提升性能;
  • 优化 RawJoin 支持 FULL JOIN 等自定义联表映射;
  • 优化 IncludeMany 三级导航对象自动 _included;#1113
FreeSql - v3.2.640

Published by 2881099 over 2 years ago

FreeSql - v3.2.610

Published by 2881099 over 2 years ago

  • 替换 Dameng 驱动,版本 dm8_20211025_x86_win_64_ent_8.1.2.84.iso。新版本可以解决字符串长度为36时Ado.Net查询数据类型会变成Guid。#1094
  • 升级 MySql.Data.dll 版本至 8.0.29,解决 net60 环境下驱动的 bug;
  • 降低 Microsoft.Data.SqlClient.dll 版本至 2.1.4,避免报错 ssl 证书的问题;(以后版本与 efcore.sqlserver 保持一致)
  • 增加 HavingIf 方法;#1095
FreeSql - v3.2.609

Published by 2881099 over 2 years ago

  • 调整 DbSet/Repository EnableAddOrUpdateNavigateList 支持 OneToOne 级联保存,级联删除(基于内存);
  • 增加 DbSet/Repository DeleteCascadeByDatabase 级联删除方法(基于数据库);
  • 增加 IList<T> IncludeByPropertyName 扩展方法,支持字符串参数;
  • 修复 pgsql IList -> JArray 映射;#1092
  • 优化 dywhere IN 查询按 500 元素分割;#1091
  • 优化 IIF 表达式解析;
FreeSql - v3.2.603

Published by 2881099 over 2 years ago

  • 优化 导航属性访问,可省略 AsSelect;
  • 优化 ObjectPool 信息国际化;
  • 优化 DbContext/Repository Update 实体有 ServerTime 既使无状态变化也必然更新的逻辑;
  • 优化 DbContext/Repository 插入非主键的自增也可回填;
  • 优化 ToList jsonb 映射;
  • 修复 sqlite padleft padright 表达式函数解析;
  • 修复 InsertValueSql 在仓储插入后不返回最新值;
  • 增加 AsTable 自动分表 InsertOrUpdate 的支持;#1066
FreeSql - v3.2.500

Published by 2881099 over 2 years ago

  • 增加 InsertDict/UpdateDict/DeleteDict/InsertOrUpdateDict 针对字典的 CUD 方法;#481
  • 增加 UseSlaveWeight 读权重设置;#1046
  • 增加 [Table(AsTable = xx)] 自动分表特性,待完善;#1066
  • 修复 Delete.Where in 查询为空时,异步操作仍然执行删除;#1068 【受影响版本 v3.2.302】
  • 修复 InsertOrUpdateDict 异常;#1067 【受影响版本 v3.2.301、v3.2.300、v3.2.200】
  • 修复 InsertDict 部分新功能遗留问题(特别是 Oracle);【受影响版本 v3.2.301、v3.2.300、v3.2.200】
  • 修复 InsertDict/UpdateDict 等字典操作在 DbContext.Orm 下无法使用的 bug;#1064 【受影响版本 v3.2.300、v3.2.200】
  • 修复 MapType 复杂表达式树解析 bug;#1062
  • 修复 UseGenerateCommandParameterWithLambda 对不可参数化的数据类型冲突的 bug;#1061 #900
  • 修复 MySql Set 类型空格处理问题;#1059
  • 修复 SaveManyAsync 多对多历史漏改的问题(同步无问题);
  • 修复 OR 表达式处理情况;#1047
  • 修复 ClickHouse 设置 NoneParameter 会报错问题;
  • 修复 Clickhouse 连接池使用问题;#646 #968 #969 #943
  • 修复 pgsql DbFirst IsPrimary bug;
  • 修复 JsonMap 与导航属性的联表查询报错的 bug;#996
  • 修复 子查询 WhereIf 可能失败的 bug;
  • 修复 StringLength 设置后 IsNullable = false 无生效的问题;
  • 修复 UseConnectionFactory 参数化问题;
  • 修复 参数值为原始 DbParameter 时转换类型报错;
  • 修复 UseGenerateCommandParameterWithLambda 子查询 IN bug;#900
  • 完善 SqlServer BulkCopy 插入 DateTime 最小值问题;
  • 优化 DbContext/Repository Update 实体有 ServerTime 既使无状态变化也必然更新的逻辑;
FreeSql - v3.0.100

Published by 2881099 almost 3 years ago

  • 增加 南大通用 Gbase 8s 国产数据库支持;
  • 增加 ClickHouse 数据库语法支持;
  • 增加 DbContext/Repository 比较变化方法 CompareState;
  • 增加 DynamicFilter Custom 自定义解析;
  • 增加 ToDataTableByPropertyName 动态查询功能;
  • 优化 兼容排序 OrderBy(a => new {}) 语法;
  • 优化 pgsql jsonb 映射,支持 List,mysql limit in 子查询;
  • 优化 InsertOrUpdate<> 使用 InsertOrUpdate<list<>>时,提示友好异常。
  • 修复 BulkCopy 与线程事务未传播的 bug;#962
  • 修复 AsTreeCte + RereadSql 不能同时使用的 bug;#964
  • 修复 FreeSql.Generator 工具生成model失败 #882
FreeSql - v2.6.100

Published by 2881099 about 3 years ago

  • 修复 fix sqlite AddMinutes seconds->minutes #774
  • 修复 Update操作的时候CanUpdate=false 未生效 #803
  • 修复 Sqlite where.And(x => x.PublishTime.Year == 2021) 查询问题 #804
  • 修复 Oracle IncludeMany IN 元素超过 500 数目的问题;#843
  • 修复 MERGE INTO 别名与 SQL 关键字冲突的 bug;#816
  • 优化 将Freesql的dynamicfilterinfo标记为[serialable] #802
  • 增加 支持符号调试 #679
  • 增加 IUnitOfWork.States 自定义状态管理,便于扩展;

v2.5.200

  • 修复 Repository/DbContext 批量修改可能无效的 bug;#709
  • 修复 fix ExecuteMySqlBulkCopyAsync .net core 3.1 Method not found #783 需升级 v2.5.201