2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

Entity Framework 7 支持批量操作和 JSON 列

作者:Edin Kapić

  • 2023-01-12
    北京
  • 本文字数:970 字

    阅读完需:约 3 分钟

Entity Framework 7支持批量操作和JSON列

微软于2022年11月连同.NET 7 发布了用于.NET Framework 的对象到数据库映射器库 Entity Framework(EF)Core 7。新版本提升了保存数据的性能,支持 JSON 列操作,支持高效的批量操作,并包含许多小的修复和改进。EF7 Core 可用于.NET 7 和.NET 6。

 

微软于 2022 年 11 月 8 日通过NuGet包的形式发布了 EF7。根据重大变更文档所述,EF Core 7 中最重要的变化是默认将 SQL Server 连接视为加密连接。开发者要么必须在他们的机器上配置有效的证书,要么显式放松安全限制,否则的话在 EF6 中有效的连接字符串在 EF7 中将会抛出异常。

 

众所周知,EF7 Core 的一个改进是在使用 SaveAsync 方法保存数据时的性能提升。在某些情况下,与同一机器上的 EF6 Core 相比,性能提升超过50%

 

EF7 Core 支持将数据库中包含JSON文档的文本列作为查询对象。作为数据库查询的一部分,开发者可以对文档中的 JSON 属性进行过滤和排序。EF7 提供了对 JSON 列的通用支持和针对 SQL Server 的具体实现。

 

针对数据库的批量操作,例如批量更新或删除,EF7 对其进行了重写。标准的 SaveChangesAsync 方法会影响多条记录,SQL 执行结果会被载入内存。EF7 现在有两个新方法,ExecuteUpdateAsync和ExecuteDeleteAsync,它们会立即在服务器端执行批量操作,不会将任何实体加载回内存。

 

默认情况下,EF Core 将.NET 类型的继承层次结构映射到单张数据库表,这种映射策略叫作每层次表(Table-per-Hierarchy,TPH)。EF Core 5 加入了每类型表(Table-per-Type,TPT)策略,层次结构中的每一个类型都被映射到一张数据库表。EF Core 7加入了每具体类型表(Table-per-Concrete-Type,TPC)策略,每个非抽象类型映射到一张数据库表,而抽象类型列被添加到抽象类型的具体实现的表中。

 

EF7 还带来了其他改进,比如在数据库优先的反向工程中支持自定义T4模板,支持覆盖和更改默认模型约定改进的拦截器和事件插入、更新和删除到存储过程的映射

 

在过去,.NET 开发人员认为 Entity Framework 笨重且缺点多多,但现在的新版本被认为是一种高效且具有容错能力的ORM框架

 

随着 EF7 的发布,EF8的路线图中增加了更多的 JSON 列增强,支持.NET 值对象,并能够将未映射的类型作为查询结果返回。

 

原文链接

https://www.infoq.com/news/2022/12/ef7-core-json/


相关链接:

InfoQ 2022 年趋势报告:.NET篇

微软将于年底终止对 .NET Core 3.1 的支持

.NET分布式缓存中的发布和订阅模式

2023-01-12 08:0011335

评论

发布
暂无评论
发现更多内容

一次线上服务高 CPU 占用优化实践

挖坑的张师傅

性能优化 JVM cpu

一次生产事故导致系统崩溃的原因排查过程

hellocj

如何在“写作平台”做一个读者

小天同学

思考 写作平台 建议 读者 阅读量

七大查找算法,面试考试皆可用

我不自豪谁志豪

Java 面试 算法

面试考试可用,十大排序算法

我不自豪谁志豪

学习 面试 算法

maven私服搭建

kcnf

maven

Flutter引擎源码解读-内存管理篇

Geek_70xtik

flutter ios android 跨平台 dart

有节制的设计

胖鱼2号

微信 设计 無印良品

1分钟系列-Elastic Stack(ELK)简介

Yezhiwei

Logstash Kibana ELK

Java并发编程基础--volatile

Java收录阁

volatile 线程

书籍推荐

蛤蟆先生

读书

程序员大佬怎么跳槽?

程序员干货站

Python 人工智能 程序员 后端

利用goaccess分析nginx日志

Megatron7

nginx Linux

Kubernetes 将迎来首个 LTS 版本

倪朋飞

Kubernetes 容器 微服务

《零基础学Java》 FAQ 之 2-Java版本那点事儿

臧萌

Java

乞丐版英制单位转换

escray

学习 CSD 认证实战营

聊聊我的程序员下属

程序员干货站

Python 人工智能 程序员 程序人生

python 之 「奶茶名字」的词云展示

小匚

Python python 爬虫 python教程

我们有来生吗?

Janenesome

读书 碎碎念 猎奇

《零基础学Java》 FAQ 之 1-HelloWorld程序发生了ClassNotFound错误怎么解决

臧萌

Java Hello World !

Graylog部署文档

勤而行之

Linux 开源 工具 日志分析

pip 配置路径要死记硬背?

风起帆扬了

Python Linux windows pip

Redis学习笔记(字符串类型)

编程随想曲

redis

Bash 的4种运行模式

Megatron7

bash Linux DevOps Shell

快捷考勤打卡设置

Megatron7

ios

取舍与可测试

孙苏勇

产品 产品设计 产品开发

回"疫"录(8):我怀疑我病了

小天同学

疫情 心理 回忆录 现实纪录 纪实

JAVA 程序展示时间与数据表保存的时间相差了 13 个小时!

我不自豪谁志豪

MySQL 学习 后端

低代码是什么鬼

Jeff Kit

低代码 全栈 开发

字节流(InputStream/OutputStream)

Howe

Java 工作流

理解 KL 散度的近似

Neil

人工智能 学习 Deep learning Machine Learning

Entity Framework 7支持批量操作和JSON列_编程语言_InfoQ精选文章