[开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)相关的知识,希望对你有一定的参考价值。
废话开头
这篇文章是我有史以来编辑最长时间的,历时 4小时!!!原本我可以利用这 4小时编写一堆胶水代码,真心希望善良的您点个赞,谢谢了!!
很久很久没有写文章了,上一次还是在元旦发布 1.0 版本的时候,今年版本规划是每月底发布小版本(年底发布 2.0),全年的开源工作主要是收集用户需求增加功能,完善测试,修复 bug。FreeSql 1.0 -> 1.5 相隔半年有哪些新功能?只能说每个功能都能让我兴奋,并且能感受到使用者也一样兴奋(妄想症)。
迫不及待的人会问,这更新速度也太快了吧,升级会不会有问题?
我们的版本开发原则:在尽量保证兼容的情况下,增加新功能,砍掉少量不合理的功能;
我们的单元测试数量:4000+,这是我们引以自豪,发布版本的保障;
2|0入戏准备
FreeSql 是 .Net ORM,能支持 .NetFramework4.0+、.NetCore、Xamarin、XAUI、Blazor、以及还有说不出来的运行平台,因为代码绿色无依赖,支持新平台非常简单。目前单元测试数量:4000+,Nuget下载数量:123K+,源码几乎每天都有提交。值得高兴的是 FreeSql 加入了 ncc 开源社区:https://github.com/dotnetcore/FreeSql,加入组织之后社区责任感更大,需要更努力做好品质,为开源社区出一份力。QQ开发群:4336577
为什么要重复造轮子?
FreeSql 主要优势在于易用性上,基本是开箱即用,在不同数据库之间切换兼容性比较好。作者花了大量的时间精力在这个项目,肯请您花半小时了解下项目,谢谢。
FreeSql 整体的功能特性如下:
支持 CodeFirst 对比结构变化迁移;
支持 DbFirst 从数据库导入实体类;
支持 丰富的表达式函数,自定义解析;
支持 批量添加、批量更新、BulkCopy;
支持 导航属性,贪婪加载、延时加载、级联保存;
支持 读写分离、分表分库,租户设计;
支持 mysql/SqlServer/PostgreSQL/Oracle/Sqlite/达梦/MsAccess;
1.0 -> 1.5 更新的重要功能如下:
一、UnitOfWorkManager 工作单元管理器,可实现 Spring 事务设计;
二、IFreeSql.InsertOrUpdate 实现批量保存,执行时根据数据库自动适配执行 merge into 或者 on duplicate key update;
三、ISelect.WhereDynamicFilter 方法实现动态过滤条件(与前端交互);
四、自动适配表达式解析 yyyyMMdd 常用 c# 日期格式化;
五、IUpdate.SetSourceIgnore 方法实现忽略属性值为 null 的字段;
六、FreeSql.Provider.Dameng 基于 DmProvider Ado.net 访问达梦数据库;
七、自动识别 EFCore 常用的实体特性,FreeSql.DbContext 拥有和 EFCore 高相似度的语法,并且支持 90% 相似的 FluentApi;
八、ISelect.ToTreeList 扩展方法查询数据,把配置父子导航属性的实体加工为树型 List;
九、BulkCopy 相关方法提升大批量数据插入性能;
十、Sqlite :memrory: 内存模式;
FreeSql 使用非常简单,只需要定义一个 IFreeSql 对象即可:
static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
.UseConnectionString(FreeSql.DataType.MySql, connectionString)
.UseAutoSyncStructure(true) //自动同步实体结构到数据库
.Build(); //请务必定义成 Singleton 单例模式
3|0UnitOfWorkManager 工作单元管理器
public class SongService
{
BaseRepository<Song> _repo;
public SongService(BaseRepository<Song> repo)
{
_repo = repo;
}
[ Transactional]
public virtual void Test1()
{
_repo.Insert( new Song { Title = "卡农1" }); //事务1
this.Test2();
}
[ Transactional(Propagation = Propagation.Nested)] //嵌套事务,新的(不使用 Test1 的事务)
public virtual void Test2()
{
_repo.Insert( new Song { Title = "卡农2" });
}
}
以上是关于[开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)的主要内容,如果未能解决你的问题,请参考以下文章
.Net orm 开源项目 FreeSql 2.0.0(一张满意的答卷)
高效理解 FreeSql WhereDynamicFilter,深入了解设计初衷[.NET ORM]
.NET ORM 仓储层必备的功能介绍之 FreeSql Repository 实现篇