HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

用于.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:003256
用户头像

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

关注

评论 1 条评论

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

华为ISDP工单宝应邀参加第十七届工程建设行业信息化发展大会

轶天下事

华为ISDP数字化现场作业:数字化转型助力电力行业安监风险管控

轶天下事

企业号 5 月 PK 榜,火热开启!

InfoQ写作社区官方

热门活动 企业号 5 月 PK 榜

企业如何两步实现数据资产化?

星环科技

数据资产化

Qz学算法-数据结构篇(哈希表)

浅辄

数据结构 三周年连更

企业级统一数据平台建设思路

星环科技

数据平台

构建系列之webpack窥探上

江湖修行

前端 Web webpack cli 构建

大数据时代数据化转型的多种模式

星环科技

Python面试题

袁袁袁袁满

三周年连更

电力行业信息化年会 华为解读“低碳、安全、发展”新思路

YG科技

AI不会取代打工人,使用AI的人才会! | 社区征文

王中阳Go

程序员 AI GPT ChatGPT 三周年征文

微信小程序开发限制

肥晨

三周年连更

低代码+智能化,企业数字化提速的又一场革命

科技热闻

华为ISDP数字化现场作业,如何助力电力行业安监风险管控?

YG科技

15个值得收藏的数据可视化开源工具

2D3D前端可视化开发

数据可视化 数据可视化工具 前端数据可视化 数据可视化设计 数据可视化软件

躬身入局的数科公司,为本就拥挤的数智化赛道带来了什么?

用友BIP

用友iuap 用友技术大会 数科公司

Databend Parser 快速入门

Databend

【专栏 03】数据仓库、数据集市、数据湖,你的企业更适合哪种数据管理架构?

星环科技

数据架构

【Linux】中安装pip(详细教程)

A-刘晨阳

Python Linux 运维 pip 三周年连更

6个优化策略,助你降低K8S成本

SEAL安全

k8s 成本管理

保姆教程 | 用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话 | 京东云技术团队

京东科技开发者

flask gpu GPU服务器 企业号 4 月 PK 榜 AI大语言模型

Spring Boot如何获取Excel sheet页?

bug菌

Spring Boot spring-boot 三周年连更

什么是软件开发领域的 obsolete 或者 deprecated 含义

汪子熙

软件开发 三周年连更

面面俱到!百度出品2023版Java面试指南,囊括面试所有硬核技能

程序员小毕

程序员 后端 架构师 java面试 八股文

Matlab实现蚂蚁群算法

Shine

三周年征文

第十七届工程建设行业信息化发展大会成功举办,华为工单宝表现亮眼

YG科技

跨平台应用开发进阶(五十八):短链基本工作原理与实现方案

No Silver Bullet

短链接 跨平台应用开发 三周年连更

Redis Set 用了 2 种数据结构来存储,到现在才知道

Java你猿哥

Java redis string HashMap底层原理

好用的Angular组件库有哪些推荐的?TinyNG好用吗?

英勇无比的消炎药

开源 前端 angular OpenTiny

华为ISDP数字化现场作业在第十七届工程建设行业信息化发展大会亮相,备受企业瞩目

轶天下事

SQL数据库管理:RazorSQL 激活版

真大的脸盆

Mac 数据库管理工具 Mac 软件 数据库软件

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