写点什么

Entity Framework 7 – 新的平台与数据存储系统

  • 2015-05-03
  • 本文字数:1092 字

    阅读完需:约 4 分钟

创建 Entity Framework 的本意是为了在完整版本的.NET 中操作关系型数据,而在 EF 7 中,以上两点假设都不再成立。

Entity Framework 7 的平台目标包括

  • 完整的.NET Framework
  • ASP.NET 5
  • Windows 10 通用应用平台 UAP
  • Mac
  • Linux

而在提供者方面,EF 7 的目标包括

  • 关系型数据库提供者:SQL Server、SQLite 和 Postgres
  • Azure Table Storage
  • Redis
  • 内存数据库提供者(用于测试目的)

EF 7 的顶层体验与 EF 6 是相同的,你仍然要与 DbContext、DbSet 等对象打交道。但内部的核心代码都进行了重写,这意味着元数据、变更跟踪和查询管道等部分都完全不同了,但对于多数应用场景来说,开发者是不会注意到这些变化的。

核心的变化是出于一系列原因的考虑,其中一个原因在于现有的架构非常难以改动,即使一些很基础的需求,例如加入一个日志框架作为插件都显得异常艰难。经过重写核心代码之后,那些令人困惑的 API 和行为都被彻底删除了。

EF 在内存占用和速度上一直为人所诟病,而这次重写的一个重点就是应对这些问题。这一改动的重要性体现在非常广泛的平台上,小型的移动设备的电池寿命非常有限,而多种云服务器则会按照 CPU 的使用率进行收费。

日志记录

Entity Framework 中的日志记录功能是源于 Microsoft.Owin.Logging 命名空间中的 ILogger 接口的实现。微软希望这个接口能够成为让所有的.NET 日志记录框架都支持的标准接口。

SQL 生成方面的改进

在 EF 7 中,新增与修改操作会得到小幅度的改善。举例来说,如果你打算对某张表中的四个产品应用某种折扣,在使用 EF 6 时,会产生共 1+N 次数据库访问:一次访问用于加载数据,然后对每一行都要进行一次访问。而在 EF 7 中,保存操作将成为批量操作,因此只需对数据库进行两次访问。

比起使用原生 SQL 的一次访问来说,这种方式依然较慢,但这种方式的优点在于能够用于非关系型数据库。

混合 SQL 与 LINQ

EF 7 支持在 LINQ 表达式中使用 FromSql 方法混合 SQL 语句,这样你就能够访问某些 EF 通常无法使用的对象,例如表值函数或是应用了索引提示的表。

context.FromSql(“SELECT * FROM Customer (WITH (IX_Index)”).OrderBy(c => c.Name)

这种方式能够生成正确的 SQL,对数据库执行 order by 和 where 语句。

EF 与移动设备

正如上文所说,EF 7 的目标之一是不限于仅仅使用在桌面应用中。其中的一个用例是离线的移动设备,其目标是你可以在移动设备上使用相同的代码以操作本地缓存及数据,然后将这些数据应用到服务器上。

要了解 Entity Framework 7 的更多信息,请观看 Channel 9 的视频“ Entity Framework 7: Data for Web, Phone, Store, and Desktop ”。

查看英文原文: Entity Framework 7: New Platforms and New Data Stores

2015-05-03 05:314566
用户头像

发布了 428 篇内容, 共 186.1 次阅读, 收获喜欢 39 次。

关注

评论

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

rxjs Observable filter Operator 的实现原理介绍

汪子熙

typescript 响应式编程 angular RXJS 7月月更

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

小哈区块

深入理解 SQL 中的 Grouping Sets 语句

元闰子

sql spark spark SQL

Python|函数和模块

AXYZdong

7月月更

TOGAF认证自学宝典V2.0

涛哥 数字产品和业务架构

企业架构 TOGAF

项目协作的进度如何推进| 社区征文

卢卡多多

初夏征文

TCP拥塞控制详解 | 3. 设计空间

俞凡

算法 网络 TCP拥塞控制

自动渗透测试工具核心功能简述

穿过生命散发芬芳

渗透测试 7月月更

ORACLE进阶(一) 通过EXPDP IMPDP命令实现导dmp

No Silver Bullet

oracle DMP 7月月更

CSRF

急需上岸的小谢

7月月更

「Docker 那些事儿」还不会安装Docker?建议看这篇就够了

Albert Edison

7月月更

远程办公工具分享|社区征文

如浴春风

初夏征文

封装一个koa分布式锁中间件来解决幂等或重复请求的问题

程序知音

编程 程序员 后端

架构实战营 - 第 6 期 毕业总结

乐邦

「架构实战营」

【LeetCode】在每个树行中找最大值Java题解

Albert

LeetCode 7月月更

cgroup简介

总想做点什么

Cgroups

毕业总结

大眼喵

「架构实战营」

SpingCloud集成zookeeper实现服务注册并访问

AI乔治

疫情常态化大背景下,关于远程办公的思考|社区征文

如浴春风

初夏征文

聊聊支付流程的设计与实现逻辑

Java 架构

x86汇编语言-从实模式到保护模式 笔记

贾献华

7月月更

Jenkins抛弃Java 8拥抱Java 11

FunTester

NFT新的契机,多媒体NFT聚合平台OKALEIDO即将上线

西柚子

远程办公之如何推进跨部门项目协作 | 社区征文

Tech技术攻关

远程办公 7月日更 项目协调 初夏征文 工作协调

Python 入门指南之开胃菜

海拥(haiyong.site)

7月月更

聊聊Flink框架中的状态管理机制

百思不得小赵

大数据 flink 状态 7月月更

Vuex(二)

小恺

7月月更

OpenHarmony应用开发之ETS开发方式中的Image组件

坚果

HarmonyOS Open Harmony OpenHarmony 3.1 Release 7月月更 harmony

远程办公之大家一同实现合作编辑资料和开发文档 | 社区征文

Tech技术攻关

远程办公 协同办公 7月日更 初夏征文

设计电商秒杀系统

大眼喵

「架构实战营」

今晚要修稿子準備發佈。但是,仍卡在這裡,也許你需要的是一個段子。

叶小鍵

Entity Framework 7 – 新的平台与数据存储系统_.NET_Jonathan Allen_InfoQ精选文章