.Net中ORM实现原理及常用 C# ORM框架

一、ORM实现原理

  ORM(Object Ralational Mapping,即对象关系映射)实现思想就是将关系数据库中表的数据映射成对象。

  用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。在具体的操作实体对象的时候,就不再需要和复杂的SQL语句打交道,只需操作实体对象的属性和方法。

  ORM是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

  ORM不仅仅管理.NET类到数据库表的映射(包括.NET 数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和http://ADO.NET处理数据的时间。

  ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射,用于实现面向对象编程语言里不同类型系统的数据之间的转换。

  ORM可以解决数据库与程序间的异构性,比如:在C#中我们使用string表示字符串,而Oracle中可使用varchar2,MySQL中可使用varchar,SQLServer可使用nvarchar。

二、常用ORM框架

序号 名称 说明 特点
1 SqlSugar SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4+ & .NET CORE的高性能、轻量级ORM框架,众多.NET框架中最容易使用的数据库访问技术。官网:https://www.donet5.com/ 开源、免费;国内开发者开发、维护;支持.NET Core;支持主流数据库,如:SQL Server,MySql,Oracle,Sqlite,达梦,金仓,时序数据库 等;维护更新及时;
2 PetaPoco 轻量的POCO对象和数据库映射的ORM框架。 开源、免费
3 linq2db linq2db也是一款快速、轻量、类型安全的POCO对象和数据库映射的ORM框架。从构架上来说,linq2db是对比如:Dapper、PetaPoco这个的微ORM的进一步封装,但它不像Entity Framework那样笨重。它没有实现状态跟踪,需要自己处理实体的状态更改等。
4 Dos.ORM Dos.ORM(原Hxj.Data)于2009年发布,2015年正式开源。在开发过程中参考了NBear与MySoft,吸取了他们的一些精华,加入新思想,同时参考EF的Lambda语法进行大量扩展。该组件已在数百个成熟项目中应用。官方网站:http://ITdos.com/Dos/ORM/Index.html 开源、免费;上手简单,0学习成本。使用方便,按照sql书写习惯编写C#.NET代码。功能强大;高性能,接近手写Sql;体积小(不到150kb,仅一个dll);完美支持Sql Server(2000至最新版),MySql,Oracle,Access,Sqlite等数据库;支持大量Lambda表达式写法,国产ORM支持度最高,开源中国ORM排行前三;不需要像NHibernate的XML配置,不需要像EF的各种数据库连接驱动;遵循MIT开源协议,除不允许改名,其它随意定制修改;
5 ServiceStack.OrmLite ServiceStack.OrmLite的目标是提供一种方便,无干扰,无配置的RDBMS无关类型的封装,与SQL保持高度的契合,展现直观的API,可以生成可预测的SQL。ServiceStack.OrmLite的宗旨:Fast, Simple, Typed ORM for .NET 开源、收费(免费版只支持单个库10张表)
6 Entity Framework (EF) http://ADO.NET Entity Framework 是微软以 http://ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案。该框架曾经为.NET Framework的一部分,但version 6之后从.NET Framework分离出来
7 NHibernate NHibernate是一个面向.NET环境的对象/关系数据库映射工具。对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。 开源、免费;批量写入;批量读/多重查询特性;批量的集合加载;带有lazy=”extra”的集合;集合过滤器和分页集合;二级缓存;集成和扩展性;代码自动生成,减少代码和sql的开发量,使开发人员摆脱开sql,http://ado.net和事务,缓存等底层;
8 Massive 小巧,动态的微ORM框架。

文章来源Net码农。

希望对你有用!最后大家如果喜欢我的文章,还麻烦动动小手点个关注。你有任何与 C#/.NET 有关的问题,欢迎在评论区与我沟通,也欢迎大家加入最活跃的编程技术交流群 (.NET/WPF )与国内大部分,优质内容的作者(包括我)直接对线哈

 

你可能感兴趣的:(数据库,sqlite,sqlserver)