写点什么

用于.NET Core 的 ORM

  • 2017-12-07
  • 本文字数:1430 字

    阅读完需:约 5 分钟

尽管 EF Core 正努力提供视图和存储过程等基本数据库特性,但是开发人员也在寻求能满足他们数据访问需求的 ORM 工具。下面列出一些相对广为使用的 ORM。

LLBLGen Pro Runtime Framework

LLBLGen Pro Runtime Framework 是一种“可选”的 ORM,它是与 LLBLGen 实体建模工具一并使用的。这里称其为“可选的”,是因为它也能和 Entity Framework 等其它 ORM 一起工作。

类似于 Entity Framework,LLBLGen Pro Runtime Framework 也是一种 OOP 风格的完备 ORM(Full ORM)。但是它在几个方面上有所差异,首先是它更侧重于性能。尽管 EF Core 的性能显著高于经典的 Entity Framework,但是两者依然明显地低于其它的 ORM。LLBLGen Pro 的作者 Frans Bouma 发起了一个性能比赛,意在比较各种.NET 数据访问和ORM 实现的速度

LLBLGen Pro Runtime Framework 也不同于 EF/EF Core,它并非绑定于上下文(Context)的。每个实体无需维持一个打开的上下文,就可以追踪自身的改变,并在内存中操作对象图。该特性无疑会受到 DBA 的欢迎,因为无需维持打开的上下文,意味着不需要维持一个打开的数据库连接,否则需要操作数据库的连接池。

与大多数用于.NET Core 的 ORM 一样,在LLBLGen Pro Runtime Framework 的Core 版本上存在一些限制。但这些限制主要局限于.NET Core 本身的缺失特性。例如,TransactionScope 目前尚不被SqlClient 支持、很少一部分对象是可二进制序列化等。

Dapper

另一种是广为人知的微 ORM(Micro-ORM)产品 Dapper 。Dapper 常被认为是最快的 ORM,几乎总是保持着.NET ORM 基准测试的头名位置。

通常使用 Dapper 实现对原始 SQL 的调用并物化查询结果,因此它在.NET 和.NET Core 上的工作情况基本相同。Dapper 不同于完备 ORM,它并不提供任何 SQL 生成功能。虽然许多开发人员并不相信由 ORM 生成的 SQL,但这还是会令 Dapper 在使用上要比其它 ORM 产品更为繁琐。

LINQ to DB

LINQ to DB 称自己是“超出 Dapper、Massive、PetaPoco 等微 ORM 产品一步之遥”。它不具备一些在 Entity Framework 中使用会引发性能问题的特性,例如更改追踪。

LINQ to DB 中的 Join 操作有些不同。在 EF 中,任何需要执行“Join”操作之处,事实上是作为子对象或集合(Collection)对待的。所生成的 SQL 自然会使用 Join 操作,但是当结果集被物化为对象后,SQL 语句的执行就不再依赖于 Join 操作了。

LINQ to DB 实际执行 Join 操作,具体实现为“Left Join”和“Inner Join”操作。如果使用 EF 解释 LINQ,那么生成语句在语法虽然略显奇特,但更好地匹配了数据库的实际工作情况。

DevExpress XPO

eXpressPersistent Objects (XPO)是一种商业产品。Reddit 用户“-GrapH-”对其如此评价:

我使用 DevExpress XPO 已有 11 年了。今年 10 月,它开始支持.NET Standard 2.0。尽管它是一个商业产品,但支持.NET Core 的首个.NET 测试版(v17.2.2)将对所有的用户免费使用。进一步更新尽管需要付费,但是其中包括了视觉设计工具和技术支持。虽然该 ORM 不同于 EF,并且推出的时间更长(如果我没有记错的话,它的第一个版本是针对.NET 1.1 发布的),但是其中基本包含了各种规模应用程序所需的所有特性。它的演示和教程提供于 https://github.com/DevExpress/XpoNetCoreDemos

你的选择是什么?

现有多种.NET Core 可用的 ORM。如果你已使用其中一种达数月时间,欢迎将你的认识反馈给我们。

译者注:在原文评论中,有人指出 NHibernate 5 和 EntityLite 也支持.NET Core 2.0。

查看英文原文: ORMs for .NET Core

2017-12-07 18:003288
用户头像

发布了 391 篇内容, 共 137.0 次阅读, 收获喜欢 256 次。

关注

评论 1 条评论

发布
用户头像
Dapper or linq2db may be the better choice beside EF core
2019-05-30 12:03
回复
没有更多了
发现更多内容

YesPMP:引领未来众包协作的智能革新

知者如C

墨迹天气亮相2023服贸会,以“新方案、新合作”彰显品牌新价值

Geek_2d6073

全国高等教育新愿景:《2023 中国人工智能人才学习白皮书》发布!

ModelWhale

人工智能 数据分析 人才培养 白皮书 高等教育

Node.js 遍历文件夹技巧:提升代码可读性与可维护性

Liam

node.js 程序员 后端 遍历 Node

【运维 Pro】时序场景实践与原理 - 1. 分布与分区

YMatrix 超融合数据库

数据库 时序 超融合数据库 YMatrix

无目标,有目标,多目标

玄兴梦影

目标 前进的路上

欧洲卡车模拟2Euro Truck Simulator 2 for Mac(模拟经营游戏)中文激活版

mac

windows 游戏 苹果mac Euro Truck Simulator 欧洲卡车模拟

4个视频教你正确使用华为云代码托管服务CodeArts Repo!

华为云PaaS服务小智

云计算 华为云 代码托管

使用Pyarmor保护Python脚本不被反向工程

高端章鱼哥

Python pyarmor

AE 3D粒子系统插件 Trapcode Particular最新激活版

胖墩儿不胖y

视频特效 Mac软件 视频特效插件 特效工具

焱融科技助力智谱AI,打造大模型训练加速之道

焱融科技

AI大模型

犀牛3D建模 Rhino 7 for Mac激活中文版最新

mac大玩家j

三维建模 三维建模软件 3D建模软件 犀牛7

数字孪生的深海迷航

脑极体

数字孪生

PCB设计丨电源设计的重要性

华秋电子

PCB

国产化是什么意思?为什么要实现国产化?有什么意义?

行云管家

信创 国产化 国产系统

从4个特点为你解密华为云媒体网络底座AND

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号9月PK榜

Sketch for mac(矢量绘图UI设计软件) 98.1中文激活版

mac

Sketch 苹果mac Windows软件 矢量绘图软件

研发管理平台的比较框架

iSoftBook

软件工程 敏捷精益 研发团队 研发效能管理 研发管理平台

数据通信网络之IPv6基础

timerring

数据通信网络

专访大连1号/连理卫星总指挥于晓洲:OpenHarmony在航天领域交出创新答卷

最新动态

【开源三方库】crypto-js加密算法库的使用方法

OpenHarmony开发者

OpenHarmony

百度智能云千帆大模型平台率先适配Falcon-180B!

Geek_2d6073

Vulkan内存模型+管理

江湖修行

移动端 OpenGL ES 渲染 vulkan

OpenHarmony:如何使用HDF驱动控制LED灯

互联网工科生

HDF 硬件设计 OpenHarmony

金融行业首批!度小满智算网络中心达到万卡规模

科技热闻

制丝系统盘、启动盘

玄兴梦影

windows 系统重装 Liunx

国家网络安全周2023时间是什么时候?有什么特点?谁举办的?

行云管家

网络安全 网络安全周

Apache Commons Daemon 使用教程

玄兴梦影

Linux windows 进程 服务

用于.NET Core的ORM_.NET_Jonathan Allen_InfoQ精选文章