建一个网站的价格,现在网站都是拿什么软件做的,深圳网站公司网站建设,wordpress付费注册插件前言
在以前的一篇文章中#xff0c;为大家分享了《什么是ORM#xff1f;为什么用ORM#xff1f;浅析ORM的使用及利弊》。那么#xff0c;在目前的.NET(C#)的世界里#xff0c;有哪些主流的ORM#xff0c;SqlSugar#xff0c;Dapper#xff0c;Entity Framework(EF)还…前言
在以前的一篇文章中为大家分享了《什么是ORM为什么用ORM浅析ORM的使用及利弊》。那么在目前的.NET(C#)的世界里有哪些主流的ORMSqlSugarDapperEntity Framework(EF)还是ServiceStack.OrmLite或者是你还有更好的ORM推荐呢 如果有的话不防也一起分享给大家。
.NET(C#)主流ORM总揽
今天这篇文章分享几款收集的目前.NET(C#)中比较流行的ORM框架比如(以下框架均为开源框架托管于github上)
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 mappingORM这个术语表示一种技术用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。
特点
开源、免费
批量写入
批量读/多重查询特性我理解是在说Future
批量的集合加载
带有lazyextra的集合
集合过滤器和分页集合
二级缓存实际上NH的二级缓存貌似也很简单
集成和扩展性
代码自动生成减少代码和sql的开发量使开发人员摆脱开sqlado.net和事务缓存等底层
推荐等级:★★★☆☆
Massive
Massive小巧动态的微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映射和数据仓库时会暴露一些过滤或者查询方法允许客户端对数据集进行进一步的筛选等操作比如代码演示从数据库中查询ID10的用户
Person p Person.Get(Person.Properties.Id 10);
优/缺点
优点
与传统的数据库访问技术相比ORM有以下优点
开发效率更高
数据访问更抽象、轻便
支持面向对象封装
缺点
降低程序的执行效率
思维固定化
从系统结构上来看,采用ORM的系统一般都是多层系统系统的层次多了效率就会降低。ORM是一种完全的面向对象的做法而面向对象的做法也会对性能产生一定的影响。
在我们开发系统时一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法在数据库应用上更有可能会被误用主要体现在对持久对象的提取和和数据的加工处理上如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中然后再进行过滤和加工处理这样就容易产生性能问题。
总结
作为一名编程人员在ORM使用的观念上会有不同具体取舍需根据具体的项目和场景