FreeSql 是 .NET 开源生态下的 ORM 轮子,转眼快两年了,说真的开源不容易(只有经历过才明白)。今天带点干货和湿货给大家,先说下湿货。
认识我的人,知道 CSRedisCore 是我写的另外一个开源组件,这个项目是 2016 年从 ctstone/csredis 项目 clone 到自己工作的项目中,修改源码经过一年多生产考虑于 2017 年发布开源于 https://github.com/2881099/csredis
ctstone/csredis 项目于 2014 年停止了更新,到我手里完善的功能如下:
连接池
哨兵高可用
集群
redis 2.8 以上的版本命令补充,包括 Geo、Stream
通讯协议 bug 修复
暂时想到的只有这些,之后可能再补充。FreeSql 文章标题为什么要来说 csredis?
这两年的时间里 95% 精力都用在了 FreeSql 上面, 5400+ 单元测试、支持十几种数据库适配,渣男辜负了 csredis 这个项目。最近一个多月开源圈子的奇葩事接二连三,居然有人跑去 ctstone/csredis 原作者的 issues 告我的状,这个告状的人还是 NOPI 原作者,因为当初他自己不维护 NPOI .NET Core 版本了,社区有好人把 .NET Core 版本测试做好了开源(dotnetcore/NPOI),告状的人很真心厉害,已经成功把 nuget.org/dotnetcore.npoi 整下架了。
他并没有得到满足,之后开始针对整个 NCC 社区成员,包括我。
他去了 sqlsugar issues 发表,说要找出 FreeSql 抄袭 sqlsugar 的证据
他又去 fur issues 发表声援,说我黑他
他还去 csredis 原作者 issues 发布内容,企图告我的状
并不是人人都像你一样,强迫要求下游项目“归档”、“制裁”,试问 mysql 可以要求 mariadb 归档?针对 NCC 组织还是针对我本人?CSRedisCore 并不在 NCC 开源组织下!!!
几天月前我已经开始了新的 redis .NET 开源组件库的编写,完全自主的看你能上哪里告状。有了这么长时间的 csredis 经验,重新写一个能避免很多问题,设计也会更好,后面我会花大部分时间做新项目,这便是今天带来的湿货,敬请期待发布!~!
入戏准备2018 年 12 月份开发 FreeSql 到现在,2300 颗星,500 Issues,200K 包下载量。说明还是有开发者关注和喜爱,只要有人关注,就不会停更不修 BUG 一说。大家有兴趣可以看看更新记录,看看我们的代码提交量,5400+ 单元测试不说非常多,个人觉得已经超过很多国产项目。
23个月了,FreeSql 还活着,而且生命力顽强见下图:
年底发布 2.0 版本正在收集需求中(欢迎前去 issues 诚意登记),本文将介绍在过去的几个月完成的一些有意义的功能介绍。
FreeSql 是 .Net ORM,能支持 .NetFramework4.0+、.NetCore、Xamarin、XAUI、Blazor、以及还有说不出来的运行平台,因为代码绿色无依赖,支持新平台非常简单。目前单元测试数量:5400+,Nuget下载数量:200K+,源码几乎每天都有提交。值得高兴的是 FreeSql 加入了 ncc 开源社区:https://github.com/dotnetcore/FreeSql,加入组织之后社区责任感更大,需要更努力做好品质,为开源社区出一份力。
QQ群:4336577(已满)、8578575(在线)、52508226(在线)
为什么要重复造轮子?
FreeSql 主要优势在于易用性上,基本是开箱即用,在不同数据库之间切换兼容性比较好。作者花了大量的时间精力在这个项目,肯请您花半小时了解下项目,谢谢。
FreeSql 整体的功能特性如下:
支持 CodeFirst 对比结构变化迁移;
支持 DbFirst 从数据库导入实体类;
支持 丰富的表达式函数,自定义解析;
支持 批量添加、批量更新、BulkCopy;
支持 导航属性,贪婪加载、延时加载、级联保存;
支持 读写分离、分表分库,租户设计;
支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/神通/人大金仓/MsAccess Ado.net 实现包,以及 Odbc 的专门实现包;
干货来了1.5.0 -> 1.10.0 更新的重要功能如下:
一、增加 Firebird 数据库实现;
二、增加 人大金仓/神通 数据库的访问支持;
三、增加 GlobalFilter.ApplyIf 创建动态过滤器;
四、增加 ISelect.InsertInto 将查询转换为 INSERT INTO t1 SELECT ... FROM t2 执行插入;
五、增加 IncludeMany(a => a.Childs).ToList(a => new { a.Childs }) 指定集合属性返回;
六、增加 $"{a.Code}_{a.Id}" lambda 解析;
七、增加 lambda 表达式树解析子查询 ToList + string.Join() 产生 类似 group_concat 的效果;
八、增加 SqlExt 常用开窗函数的自定义表达式解析;
九、增加 ISelect/IInsert/IUpdate/IDelete CommandTimeout 方法设置命令超时;
十、完善 WhereDynamicFilter 动态过滤查询;
十一、增加 BeginEdit/EndEdit 批量编辑数据的功能;
十二、增加 父子表(树表)递归查询、删除功能;