.NET(C#)主流的ORM框架

.NET(C#)主流ORM总揽程序员

SqlSugar (国内)算法

Dos.ORM (国内)sql

Chloe (国内)数据库

StackExchange/Dapper (国外)编程

Entity Framework (EF) (国外)缓存

NHibernate (国外)安全

ServiceStack/ServiceStack.OrmLite (国外)数据结构

linq2db (国外)app

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 = new DbCommand(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使用的观念上会有不一样,具体取舍需根据具体的项目和场景
相关文章
相关标签/搜索