前言:

最近有很多同学问我.NET方面有哪些好用的ORM框架,我觉得这方面的介绍网上应该会介绍的比较全面文章,于是我想搜一篇全面的介绍文章发给他们结果我发现网上说来说去基本上就是那几个,于是就有了这篇文章。

什么是ORM?

ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题,ORM的作用是在关系型数据库和业务实体对象之间作一个映射,这样我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

如何选择合适自己的ORM框架?

对于我们而言选择ORM框架的目的其实都是为了让我们的程序更好的操作数据库,提高开发编程效率和程序的维护拓展性。因此我们在为自己负责的项目选择合适的ORM框架的时候需要从项目的业务场景出发,选择最适合自己团队的ORM框架(注意没有完美的框架,适合团队的才是最好的)。以下是一些比较好用且优秀的.NET-ORM框架,排名不分先后可供大家参考学习(假如您有更好的.NET相关ORM推荐请在文末留言,谢谢)。

EF/EF Core

Entity Framework (EF) Core 是轻量化、可扩展、开源和跨平台版的常用 Entity Framework 数据访问技术,EF Core 是适用于 .NET 的现代对象数据库映射器。它支持 LINQ 查询、更改跟踪、更新和架构迁移。EF Core 通过提供程序插件 API 与 SQL Server、Azure SQL 数据库、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 和其他数据库一起使用。(微软官方出品)。

EF Core 可用作对象关系映射程序 (O/RM),这可以实现以下两点:

  • 使 .NET 开发人员能够使用 .NET 对象处理数据库。

  • 无需再像通常那样编写大部分数据访问代码。

官方文档教程:https://docs.microsoft.com/zh-cn/ef/

GitHub地址:https://github.com/dotnet/efcore

以下是EF/EF Core相关拓展程序包:

  • EFCore.BulkExtensions - EF的批量操作库。

  • EntityFramework-Plus - EF的增强工具集,包括过滤器,审核,缓存,查询,批删除,批更新等。

  • EntityFramework.Exceptions - 当您的SQL查询违反SqlServer,MySql或PostgreSQL中的数据库约束时,请对EntityFrameworkCore使用类型化的异常处理。

  • EntityFramework.Triggers - EF触发器。

  • EntityFramework.Rx - EF的Reactive 扩展程序。

  • Npgsql.EntityFrameworkCore.PostgreSQL - PostgreSQL的EF驱动程序。

  • EntityFramework.TypedOriginalValues - 通过某些特殊方法来获得数据库对象在本次修改前的原始值。常见的使用场景是对数据库操作的数据做审计。

  • EntityFramework.VersionedProperties -  将对象里每次变更历史自动保存到一个特定的属性里。审计或者做历史版本时比较适用。

  • LINQKit - LINQKit是LINQ对SQL和Entity Framework的免费扩展集。

  • Pomelo.EntityFrameworkCore.MySql - mysql的EF驱动程序。

  • spectre.query - EF的简单查询库。

  • StoredProcedureEFCore-用于执行存储过程的 Entity Framework Core 扩展。

Dapper

Dapper是一个简单的.NET对象映射器,在速度方面具有"King of Micro ORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。

主要特点:高性能、易排查、易运维、灵活可控。

GitHub地址:https://github.com/DapperLib/Dapper

以下是Dapper相关拓展程序包:

  • Dapper-Extensions - Dapper Extensions 是一个小型ORM库,通过为您的 POCO 添加基本的 CRUD 操作(获取、插入、更新、删除)来补充Dapper。对于更高级的查询场景,Dapper Extensions 提供了一个谓词系统。这个库的目标是通过不需要任何属性或基类继承来保持你的 POCO 纯净。

  • Dapper-FluentMap - Dapper的扩展。

  • Dommel - Dapper的CRUD操作。

  • MicroOrm.Dapper.Repositories - Dapper的CRUD操作。

有哪些值得推荐的.NET ORM框架?相关推荐

  1. 六款值得推荐的Android开源框架简介

    六款值得推荐的Android开源框架简介 技术不再多,知道一些常用的.不错的就够了.下面就是最近整理的"性价比"比较高的Android开源框架,应该是相对实用的. 1.volley ...

  2. 值得推荐的C/C++框架和库 (真的很强大)

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

  3. 【转】值得推荐的C/C++框架和库

    转载自:值得推荐的C/C++框架和库 - 蓝色理想 - C++博客 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用for ...

  4. 天将 转:值得推荐的C/C++框架和库(真的很强大)

    转:值得推荐的C/C++框架和库(真的很强大) - 天将 - 博客园 天将 转:值得推荐的C/C++框架和库(真的很强大) 值得学习的C语言开源项目 - 1 Webbench - 2 Tinyhttp ...

  5. 6个值得推荐的Android开源框架简介

    此文章转载至http://blog.csdn.net/lxmhuendan/article/details/39643995点击打开链接 虽然我们在做app的时候并不一定用到框架,但是一些好框架的思想 ...

  6. 六款值得推荐的 android 开源框架简介

    1.volley  项目地址 https://github.com/smanikandan14/Volley-demo  (1)  JSON,图像等的异步下载:  (2)  网络请求的排序(sched ...

  7. 值得推荐的C/C++框架和库 【强烈推荐】

    目录(?)[-] 值得学习的C语言开源项目 Libevent Memcached Redis Webbench APRApache Portable Runtime NGINX Tinyhttpd c ...

  8. 值得推荐的C/C++框架和库(转载)

    本文系外部转贴,原文地址:http://coolshell.info/c/c++/2014/12/13/c-open-project.htm]留作存档 下次造轮子前先看看现有的轮子吧 值得学习的C语言 ...

  9. [转载]值得推荐的C/C++框架和库

    值得学习的C语言开源项目 C++ 资源大全 值得学习的C语言开源项目 1.Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我 ...

最新文章

  1. PyCharm如何集成PyQt
  2. POJ 1047 Round and Round We Go
  3. 如何去调试前端JS代码?以Chrome谷歌浏览器为例
  4. java mvc建包结构_Java SSM框架的配置方法、MVC结构的分析、响应的流程
  5. 安卓第三阶段实训项目:基于网络乐库音乐播放器V1.0
  6. Html学习总结(2)——Html页面head标签元素的意义和应用场景
  7. 海南航空宁波到重庆的变态机票
  8. js 去除空格与换行
  9. linux du -h按文件大小,linux中du的用法
  10. html页面嵌入高德地图,高德地图WEB版基础控件展示
  11. 腾达n318虚拟服务器,腾达N318无线路由器的设置教程
  12. getUserProfile:fail can only be invoked by user TAP gesture
  13. 求两个数中的最大值最小值算法
  14. PS四种扁平化设计风格
  15. AutoCAD的下载与安装
  16. 【STM32F407】第2章 ThreadX FileX文件系统介绍
  17. A Game of Thrones(39)
  18. R 数据可视化 03 | 圈图
  19. Python三国华容道程序-广度优先
  20. java mathematica_java与mathematica

热门文章

  1. 关于言论自由。_言论自由
  2. 【COCI 2012】踢足球
  3. 漆包线和电磁线的区别
  4. 生活随记-祝福表妹安好
  5. 上海基诺墙绘 DIY打造居家黑板涂鸦墙 个案例精图细化
  6. 【高危】Apache Linkis Gateway模块存在身份验证绕过漏洞(CVE-2023-27987)
  7. 【病态问题误差传播与算法稳定性实验】
  8. Stack Trace
  9. Linux进程管理之进程同步
  10. Python语言是编译型语言还是解释型语言?(Python程序执行过程)