• ORM简介


    ORM:

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

    主流的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 对象处理数据库。

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

    官方文档教程:

    GitHub地址:

    以下是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"的头衔,几乎与使用原始的数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。

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

    GitHub地址:

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

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

    • Dapper-FluentMap- Dapper的扩展。

    • Dommel- Dapper的CRUD操作。

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

    回到顶部

    FreeSql

    FreeSql 是一款功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin。

    主要特点:

    • 支持 CodeFirst 模式,即便使用 Access 数据库也支持数据迁移;

    • 支持 DbFirst 模式,支持从数据库导入实体类,或使用实体类生成工具生成实体类;

    • 支持 深入的类型映射,比如 PgSql 的数组类型等;

    • 支持 丰富的表达式函数,以及灵活的自定义解析;

    • 支持 导航属性一对多、多对多贪婪加载,以及延时加载;

    • 支持 读写分离、分表分库、过滤器、乐观锁、悲观锁;

    • 支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/南大通用/翰高/ClickHouse/Access 等数据库;

    官方文档地址:

    GitHub地址:

    SqlSugar

    SqlSugar是一款老牌 .NET 开源ORM框架,支持.NET CORE 和 MySql、SqlServer、Sqlite、Oracle 、 postgresql 、达梦、人大金仓 数据库,具有EF NH的功能,比EF更人性化的语法,支持真实的批量操作,另外还有媲美Dapper的性能。

    主要特点:简单易用、功能齐全、高性能、轻量级、服务齐全、支持全自动分表组件,SAAS分库,大数据处理的ORM。

    官网地址:

    GitHub地址:

    Chloe

    Chloe 是一个轻量级的对象/关系映射(ORM)库。查询接口类似于 LINQ。您可以使用 Chloe.ORM 通过 lambda 查询 LINQ 之类的数据并执行任何操作(加入查询 | 组查询 | 聚合查询 | 插入 | 批量更新 | 批量删除)。

    文档地址:https ://

    GitHub地址:

    nhibernate-core

    NHibernate 是一个成熟的开源对象关系映射器,适用于 .NET 框架。它被积极开发,功能齐全,并在数千个成功的项目中使用。

    NHibernate社区网站 -

    GitHub地址:

    SmartSql

     

    主要特点:简洁、高效、高性能、扩展性、监控、渐进式开发!

    文档地址:

    GitHub地址:

    PetaPoco

    PetaPoco 是一个用于 .NET(4、4.5+、net standard 2.0+)和 Mono 的微型、快速、易于使用的 micro-ORM。由于 PetaPoco 所代表的简单性和易用性,它受到许多人的喜爱。PetaPoco 是首选的微 ORM,也是任何体面的开发人员工具包中必不可少的实用程序。

    主要特点:

    • 与Dapper一样,它很快,因为它使用动态方法生成 (MSIL) 将列值分配给属性。

    • 像Massive一样,它现在也支持动态 Expandos。

    • 与ActiveRecord一样,它支持对象和数据库表之间的密切关系。

    • 与SubSonic一样,它支持使用 T4 模板生成 poco 类(仅限 V5)。

    • 与Massive一样,它以单个文件的形式提供,您可以轻松地将其添加到任何项目或编译(仅限 V5)。

    文档地址:

    GitHub地址:

    linq2db

    LINQ to DB 是最快的LINQ数据库访问库,在POCO对象和数据库之间提供了一个简单、轻量、快速且类型安全的层。
    在架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式,而不是魔术字符串,同时在代码和数据库之间维护一个薄抽象层。您的查询由 C# 编译器检查并允许轻松重构。
    但是,它不像 LINQ to SQL 或实体框架那么重。没有更改跟踪,因此您必须自己进行管理,但从积极的方面来说,您可以获得更多控制权并更快地访问您的数据。

    文档地址:

    GitHub地址:

    RepoDb

    RepoDB 是一个开源的 .NET ORM 库,它弥补了微 ORM 和全 ORM 的差距。它可以帮助您在开发过程中简化何时使用 BASIC 和 ADVANCE 操作的切换。

    主要特点:

    • 易于使用- 这些操作都作为您的 IDbConnection 对象的扩展方法实现。只要您的连接处于打开状态,就可以对您的数据库调用任何操作。

    • 高性能- 它缓存已经生成的编译表达式以供将来重用和执行。它了解您的架构以创建最佳的编译表达式 AOT。

    • 内存高效- 它提取并缓存您的对象属性、执行上下文、对象映射和 SQL 语句。它在整个转换和执行过程中重用它们。

    • 动态和混合- 它提供了成熟 ORM 的一些高级功能。它极大地帮助开发人员在开发过程中进行上下文切换时简化体验。

    • 开源软件——它是一个开源软件,并且永远是免费的。它旨在进一步改进 .NET 数据访问体验和解决方案,以及社区的集体思想。

    • 高质量- 它是一个高质量的微型 ORM,由 10K+ 真实单元和集成测试支持。它经过高度测试,并被生产环境中运行的各种关键系统使用。

    GitHub地址:

    ServiceStack.OrmLite

    OrmLite是一个快速、简单、类型化的.NET ORM,OrmLite 的目标是提供一个方便、DRY、无配置、与 RDBMS 无关的类型包装器,该包装器与 SQL 保持高度亲和性,公开直观的 API,生成可预测的 SQL 并干净地映射到断开连接和数据传输对象 (DTO) 友好、普通的旧C# 对象 (POCO)。这种方法更容易推理您的数据访问,从而清楚地知道什么 SQL 在什么时间执行,同时减轻意外行为、隐式 N+1 查询和重对象关系映射器 (ORM) 中普遍存在的泄漏数据访问。

    文档地址:

    GitHub地址:

    SQLite-net

    简单、强大、跨平台的 SQLite 客户端和 .NET 的 ORM。

    主要特点:

    • 非常容易与现有项目集成并在所有 .NET 平台上运行。

    • SQLite 上的瘦包装器,快速高效。(这个库不应该是您查询的性能瓶颈。)

    • 用于安全执行 CRUD 操作和查询(使用参数)并以强类型方式检索这些查询结果的非常简单的方法。

    • 与您的数据模型一起工作,而不会强迫您更改您的类。(包含一个小的反射驱动 ORM 层。)

    GitHub地址:

    Insight.Database

    Insight.Database是一个用于 .NET 的快速、轻量级的 micro-orm。

    GitHub地址:

    cyqdata

    cyq.data是一个高性能且功能最强大的orm(支持.NET Core),支持Txt、Xml、Access、Sqlite、Mssql、Mysql、Oracle、Sybase、Postgres、DB2、Redis、MemCache。

    GitHub地址:

    TinyORM

    TinyORM是一个简单、快速且安全的微型.NET ORM。

    Wiki地址:

    GitHub地址:

     

     

  • 相关阅读:
    原:Myeclipse10+Egit+bitbucket实现版本控制
    Myeclipse10使用git
    MyEclipse 10 下在线安装插件
    转:git windows中文目录乱码问题解决
    STUN和TURN技术浅析
    原:android4.2.2蓝牙源码阅读--bluedroid部分
    原创:超简单!windows配置NDK开发环境使用JNI
    c++对象的生命周期
    C++中虚析构函数的作用
    windows 命令行下 简单好用的查看端口占用情况的方法
  • 原文地址:https://www.cnblogs.com/Zingu/p/16456136.html
Copyright © 2020-2023  润新知