.NET(C#)主流ORM总揽

SqlSugar (国内)

Dos.ORM (国内)

Chloe (国内)

StackExchange/Dapper (国外)

Entity Framework (EF) (国外)

NHibernate (国外)

ServiceStack/ServiceStack.OrmLite (国外)

linq2db (国外)

Massive (国外)

PetaPoco (国外)

SqlSugar

SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能、轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术。

特点:

开源、免费

国内开发者开发、维护;

支持.NET Core;

支持主流数据库,如:SQL Server,MySql,Oracle,Sqlite等;

维护更新及时

PetaPoco

PetaPoco:轻量的POCO对象和数据库映射的ORM框架。

特点:

开源、免费

linq2db

linq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。

推荐等级:★★★★☆

Dos.ORM

Dos.ORM(原Hxj.Data)于2009年发布,2015年正式开源。在开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。该组件已在数百个成熟项目中应用。官方网站:http://ITdos.com/Dos/ORM/Inde...

特点:

开源、免费

上手简单,0学习成本。使用方便,按照sql书写习惯编写C#.NET代码。功能强大

高性能,接近手写Sql

体积小(不到150kb,仅一个dll)

完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库

支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三

不需要像NHibernate的XML配置,不需要像EF的各种数据库连接驱动

遵循MIT开源协议,除不允许改名,其它随意定制修改

ServiceStack.OrmLite

ServiceStack.OrmLite的目标是提供一种方便,无干扰,无配置的RDBMS无关类型的封装,与SQL保持高度的契合,展现直观的API,可以生成可预测的SQL。

ServiceStack.OrmLite的宗旨:Fast, Simple, Typed ORM for .NET

特点:

开源、收费(免费版只支持单个库10张表)

Entity Framework (EF)

ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来。

NHibernate

NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

特点:

开源、免费

批量写入

批量读/多重查询特性(我理解是在说Future?)

批量的集合加载

带有lazy="extra"的集合

集合过滤器和分页集合

二级缓存(实际上NH的二级缓存貌似也很简单?)

集成和扩展性

代码自动生成,减少代码和sql的开发量,使开发人员摆脱开sql,ado.net和事务,缓存等底层

Massive

Massive:小巧,动态的微ORM框架。

.NET(C#)主流ORM总揽SqlSugar (国内)Dos.ORM (国内)Chloe (国内)StackExchange/Dapper (国外)Entity Framework (EF) (国外)NHibernate (国外)ServiceStack/ServiceStack.OrmLite (国外)linq2db (国外)Massive (国外)PetaPoco (国外)SqlSugarSqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能、轻量级 ORM框架,众多.NET框架中最容易使用的数据库访问技术。

特点:

开源、免费国内开发者开发、维护;支持.NET Core;支持主流数据库,如:SQL Server,MySql,Oracle,Sqlite等;维护更新及时

PetaPocoPetaPoco:轻量的POCO对象和数据库映射的ORM框架。

特点:

开源、免费

linq2dblinq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。

推荐等级:★★★★☆

Dos.ORMDos.ORM(原Hxj.Data)于2009年发布,2015年正式开源。在开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。该组件已在数百个成熟项目中应用。官方网站:http://ITdos.com/Dos/ORM/Inde...

特点:

开源、免费上手简单,0学习成本。使用方便,按照sql书写习惯编写C#.NET代码。功能强大高性能,接近手写Sql体积小(不到150kb,仅一个dll)完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三不需要像NHibernate的XML配置,不需要像EF的各种数据库连接驱动遵循MIT开源协议,除不允许改名,其它随意定制修改

ServiceStack.OrmLiteServiceStack.OrmLite的目标是提供一种方便,无干扰,无配置的RDBMS无关类型的封装,与SQL保持高度的契合,展现直观的API,可以生成可预测的SQL。ServiceStack.OrmLite的宗旨:Fast, Simple, Typed ORM for .NET

特点:

开源、收费(免费版只支持单个库10张表)

Entity Framework (EF)ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来。

NHibernateNHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。

特点:

开源、免费批量写入批量读/多重查询特性(我理解是在说Future?)批量的集合加载带有lazy="extra"的集合集合过滤器和分页集合二级缓存(实际上NH的二级缓存貌似也很简单?)集成和扩展性代码自动生成,减少代码和sql的开发量,使开发人员摆脱开sql,ado.net和事务,缓存等底层

MassiveMassive:小巧,动态的微ORM框架。

什么是ORM

ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

为什么用ORM

在程序开发中,数据库保存的表,字段与程序中的实体类之间是没有关联的,在实现持久化时就比较不方便。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。这种方案存在以下不足:1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度

ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁

ORM的方法论基于三个核心原则:

简单:以最基本的形式建模数据

传达性:数据库结构被任何人都能理解的语言文档化

精确性:基于数据模型创建正确标准化了的结构

本文以C#编程语言为例,在传统的数据读取操作中,我们以Ado.net的方式对数据库进行CRUD操作,使用的基本都是SQL硬编码,比如有以下数据库查询操作:

String sql= "SELECT ... FROM persons WHERE id = 10";

DbCommand cmd= newDbCommand(connection, sql);

Result res=cmd.Execute();

String name= res[0]["FIRST_NAME"];

使用了ORM映射的C#实现的伪代码:

Person p= repository.GetPerson(10);

String name=p.getFirstName();

上面的示例代码表示我们可以从数据仓库repository中获取到一个实体对象,当然数据仓库中可能包含其他的方法,你也可以定义自己的ORM实现,比如:

Person p= Person.Get(10);

通常,在处理ORM映射和数据仓库时会暴露一些过滤或者查询方法,允许客户端对数据集进行进一步的筛选等操作,比如代码演示从数据库中查询ID=10的用户:

Person p= Person.Get(Person.Properties.Id == 10);

优/缺点

优点

与传统的数据库访问技术相比,ORM有以下优点:

开发效率更高

数据访问更抽象、轻便

支持面向对象封装

缺点

降低程序的执行效率

思维固定化

从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。

在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。

总结

作为一名编程人员,在ORM使用的观念上会有不同,具体取舍需根据具体的项目和场景

mysql .net orm_.NET(C#)主流的ORM框架相关推荐

  1. java mysql orm框架_主流 Java ORM 框架有哪些?

    主流 Java ORM 框架有哪些? ORM 是 Object Relational Mapping 的缩写,译为 "对象关系映射" 框架. 所谓的 ORM 框架就是一种为了解决面 ...

  2. 主流 Java ORM 框架有哪些?

    主流 Java ORM 框架有哪些? ORM 是 Object Relational Mapping 的缩写,译为 "对象关系映射" 框架. 所谓的 ORM 框架就是一种为了解决面 ...

  3. mysql .net orm_.NET(C#)主流ORM总揽

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper, ...

  4. mysql .net orm_目前的.NET(C#)世界里,主流的ORM框架

    推荐一些常用的asp.net ORM框架 SqlSugar SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET CORE的高性能.轻量级 ...

  5. mysql orm .net_.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper, ...

  6. .NET(C#)有哪些主流的ORM框架,FreeSql,SqlSugar,Dapper,EF还是...

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,FreeSql,SqlSugar ...

  7. dapperpoco mysql_.NET(C#)有哪些主流的ORM框架,SqlSugar,Dapper,EF还是...

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper, ...

  8. .NET(C#)有哪些主流的ORM框架

    前言 在以前的一篇文章中,为大家分享了<什么是ORM?为什么用ORM?浅析ORM的使用及利弊>.那么,在目前的.NET(C#)的世界里,有哪些主流的ORM,SqlSugar,Dapper, ...

  9. .NET主流的ORM框架

    C# .NET主流ORM框架举例: 1.FreeSql(国内) 2.SqlSugar (国内) 3.Dos.ORM (国内) 4.Chloe (国内) 5.StackExchange/Dapper ( ...

最新文章

  1. 分页控件-ASP.NET(AspNetPager)
  2. linux管道阻塞代码,linux中的管道
  3. 高级C语言教程-存储器和指针
  4. 揭秘数据技术的前世今生,Techo TVP 开发者大会来了!
  5. 计算机图形学基础期末考试试题,计算机图形学基础_试卷(B)答案
  6. CGLib动态代理原理
  7. 单页面与多页面的优缺点
  8. 线程池ThreadPoolExcutor的使用
  9. while 常见程序逻辑
  10. 比特币——区块链的发展历程
  11. C/C++[1928, ]日期处理
  12. java 常用汉字_中国常用汉字有多少
  13. 软考资料(系统集成管理工程师)无偿分享
  14. p系列服务器产品介绍,常用p系列服务器RS6000服务器产品号码对照表.doc
  15. 《Python绝技:运用Python成为顶级黑客》读后感
  16. 奥迪A6(C5)遥控器钥匙更换电池后无法使用的适配(对码)方法
  17. mysql有符号和无符号,MySQL中的“无符号”是什么意思以及何时使用它?
  18. 怀旧服最新pve服务器,部落玩家被歧视了?魔兽怀旧服三个PVE服务器,联盟专享占两个...
  19. 2万字系统总结,带你实现 Linux 命令自由?还不赶紧进来学习
  20. 如何手工制作html网站地图,提升网站收录率简单的方法是手工制作网站地图与工具生成网站地图两种...

热门文章

  1. 蓝牙AirTag防丢findmy
  2. 开水果店需要知识有哪些,开水果店需要的水果资料有哪些
  3. 第一个Ionic项目
  4. 3月14日dnf服务器维护,【每周维护】2013年3月14日维护公告
  5. 数据安全治理体系建设(内有干货)
  6. BPF之前端工具BCC与bpftrace
  7. SpringMVC学习篇(二)
  8. 【硬件控制】5. Pico使用串口与电脑通信
  9. 被路由器拉黑了怎么解除?
  10. 自适应滤波器:维纳滤波器2——LCMV及MVDR实现