AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论 1 条评论

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

【开始报名啦】4 月 12 日 TiDB 社区活动在南京!传统技术栈替换和 AI 浪潮正当时,面向未来的国产数据库怎么选择?转发海报参与新款双肩包抽奖!

TiDB 社区干货传送门

Dify基于TiDB的数据架构重构实践

TiDB 社区干货传送门

YashanDB出席胶东CIO十周年峰会 自研数据管理方案驱动智造升级

极客天地

Web3可能是为AI Agents(代理)构建的

PowerVerse

AGI #Web3 AI Agents

普通电脑接入去中心化云算力,玩转3A游戏大作将触手可及

PowerVerse

区块链+ 算力 去中心化云算力

hahm哈姆 『全球运营总首码』一手高政策对接团队

web3区块链创业团队DappNetWork

2025长三角国际物联网展

AIOTE智博会

物联网展览会 物联网展会 物联网博览会 物联网展

做定时任务,一定要用这个神库!!

沉浸式趣谈

JavaScript node.js 定时

MaxCompute MaxFrame正式推出AI Function功能,一键调用大模型处理海量数据!

阿里云大数据AI技术

大数据 MaxCompute Qwen DeepSeek AI Function

MySQL遇到AI:字节跳动开源 MySQL 虚拟索引 VIDEX

字节跳动开源

虚拟索引技术 解耦架构 可扩展接口 生产验证 多形态部署

Java 开发中的 AI 黑科技:如何用 AI 工具自动生成 Spring Boot 项目脚手架?

飞算JavaAI开发助手

java spingboot #程序员

伟大的德比:皇家贝蒂斯与塞维利亚对阵史

新消费日报

秒级响应!淘宝商品列表 API 一键拉取全品类商品数据

tbapi

淘宝API 关键词搜索淘宝接口 淘宝商品列表接口 淘宝商品列表API

技术详解|DNS隧道及无监督异常检测

日志易

DNS隧道 日志易

深度解析:通过 AIBrix 多节点部署 DeepSeek-R1 671B 模型

火山引擎开发者社区

技术管理者,首先应该学会预期管理

老张

团队管理 职场成长

Fabric8 Kubernetes 教程——job、service、ingress、statefulSet、daemonSet

FunTester

无需公网IP聚水潭ERP远程调用仓库监控,贝锐花生壳只需简单3步

贝锐

内网穿透 ERP

告别手写 SQL!AI 工具如何自动生成 Java 数据库 ORM 代码?

飞算JavaAI开发助手

订单支付系统难搞?AI 生成 Java 支付状态机代码 (含超时关单 + 回调校验)

飞算JavaAI开发助手

AI时代的数据底座:火山引擎多模态数据湖的设计与实践

火山引擎开发者社区

Apache SeaTunnel 用户征稿计划启动!分享数据集成实践经验,赢社区荣誉!

Apache SeaTunnel

PB 级大数据新势力!Apache SeaTunnel 亮相 Cloudberry 杭州 Meetup(附报名)

Apache SeaTunnel

告别数据难题:淘宝商品评论API带来高效解决方案

tbapi

淘宝API 淘宝商品评论采集 淘宝商品评论API 天猫商品评论API

国产化不是选择题,而是必答题

TiDB 社区干货传送门

夏令时的坑:你的数据库真的能正确处理时间跳变吗?

TDengine

数据库 tdengine 时序数据库

HAHM哈姆|HAHM哈姆中国区运营中心首码|HAHM官网

web3区块链创业团队DappNetWork

AI口语练习APP的开发

北京木奇移动技术有限公司

软件外包公司 AI口语 AI口语练习APP

AI口语练习APP的运营

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

电商平台如何用"比价API"省下百万运营成本?实战经验揭秘

代码忍者

API接口平台

TiDB 可观测性解读(二)丨算子执行信息性能诊断案例分享

PingCAP

数据库 算子 TiDB

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