FreeSql 是功能强大的 .NET ORM,支持 .NetFramework 4.0 、.NetCore 2.1 、Xamarin 等支持 NetStandard 所有运行平台。
开发者优先:以开发者为中心的设计理念,想你所想,亦享你所享。
多场景实现:支持 CodeFirst / DbFirst / DbContext / Repository / UnitOfWork / AOP / 支持 .NETCore 2.1 , .NETFramework 4.0 , Xamarin。
多数据库支持:MySql, Postgresql, SqlServer, Oracle, Sqlite, Firebird, 达梦, 人大金仓, 神通, Access。
官 网:http://freesql.net
开源地址:GitHub https://github.com/dotnetcore/FreeSql
Gitee https://gitee.com/FreeSql/FreeSql-ORM
- SqlSugar【国产】
SqlSugar是一款 老牌 .NET开源ORM框架,由果糖大数据科技团队维护和更新 ,Github star数仅次于EF 和 Dapper。
国内最受欢迎的 ORM 框架,支持.NET CORE 和 MySql、SqlServer、SQLite、Oracle 、 postgresql 、达梦、人大金仓 数据库,具有EF NH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美DAPPER的性能
优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、有专业技术支持一天18小时服务。
支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓。
免费服务- 基本用法咨询
- SqlSugar版块提交BUG
- 官网首页提交建议和需求
- 代码开源 可用于任何商用项目 不收取费用 下载
- qq交流群讨论 995692596(空闲) 654015377(1800/2000 拥挤) 726648662((已满) 225982985 (已满)
- 持续更新的文档
性能原理
比大部分的DbHelper性能要高,底层采用Emit动态创建数据绑定程序集进行缓存,缓存后的性能可以达到原生水平,相反原始的ADO需要用到大量装箱和拆箱操作性能反而下降。
性能对比
SqlSugar 对比 Dapper:无论在性能还是在功能上都全面压制 Dapper ,虽然基础性能和Sugar打平手,便是批量操作 Dapper完全不行。
SqlSugar 对比 EF:SqlSugar小巧并且功能齐全,最重要的是上手容易,学习成本低 ,性能高于EF框架。
官网:https://www.donet5.com/Home/Doc
GitHub:https://github.com/donet5/SqlSugar
Gitee:https://gitee.com/dotnetchina/SqlSugar
- Overt.Core.Data【国产】
基于Dapper封装的Linq表达式数据库访问驱动,内置自定义分库,分表的实现。目前支持SqlServer、MySql、Sqlite。
主要优势:
- 官方建议使用DDD领域驱动设计思想开发。
- 支持多种数据库,简单配置添加链接的配置即可。
- 多数据库的支持。
- 支持分表操作,自定义分表策略的支持。
- 支持表达式方式编写,减少写Sql语句机械性工作。
- 可对Dapper 进行扩展。
- 性能依赖于Dapper 本身的性能,Dapper 本身是轻量级ORM ,官方测试性能都强于其他的ORM。
开源地址:https://github.com/overtly/core-data
- EFCore.Sharding【国产】
读写分离分库分表一直是数据库领域中的重难点,当数据规模达到单库极限的时候,就不得不考虑分表方案。EF Core作为.NET Core中最为主流的ORM,用起来十分方便快捷,但是官方并没有相应的Sharding支持,鄙人不才,经过一番摸索之后终于完成这个框架。
本框架旨在为EF Core提供Sharding(即读写分离分库分表)支持,不仅提供了一套强大的普通数据操作接口,并且降低了分表难度,支持按时间自动分表扩容,提供的操作接口简洁统一。
开源地址:https://github.com/Coldairarrow
- EFCore.BulkExtensions
EFCore.BulkExtensions 是 .NET Core 开发的,针对EFCore进行扩展的高性能批量操作组件。支持批量插入(Insert)、批量更新(Update)、批量删除(Delete)和读取操作。目前该框架支持SqlServer和Sqlite。
SqlServer批量插入是通过SqlBulkCopy类操作,大数据操作的时候性能非常不错。
测试结果: