[开源] .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

为什么要重复造轮子?

[开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)

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: 内存模式;

[开源] .Net orm FreeSql 1.5.0 最新版本(番号:好久不见)

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 AOP 功能模块

高效理解 FreeSql WhereDynamicFilter,深入了解设计初衷[.NET ORM]

.NET ORM 仓储层必备的功能介绍之 FreeSql Repository 实现篇

FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]

FreeSql 导航属性的联级保存功能