最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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:314295
用户头像

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

关注

评论

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

足不出户,搞定交付——独家交付秘籍(第二回)

阿里巴巴云原生

TASKCTL产品安装常见问题

TASKCTL

分布式 kettle ETL ETL任务 调度任务

在APICloud开发平台使用友盟统计功能教程

YonBuilder低代码开发平台

APP开发 APICloud 友盟

如何以卫语句取代嵌套条件表达式

华为云开发者联盟

条件表达式 卫语句 嵌套条件表达式 代码结构

京东运动露营活动亮相首钢园,精彩持续整个四月

科技新消息

一文让你彻底了解Linux内核源码组织结构【建议小白收藏】

简说Linux内核

Linux内核 进程管理 驱动开发 嵌入式开发 设备驱动

Flink 在众安保险金融业务的应用

Apache Flink

大数据 flink 编程 流计算 实时计算

EMAS隐私合规检测专项服务,从确保形式合规及实质合规规避风险

移动研发平台EMAS

阿里云 开发 数据安全 移动开发 隐私合规

3月月更中奖名单新鲜出炉!快来看有没有你呀!

InfoQ写作社区官方

3月月更 热门活动

PLG公司的机遇和挑战

LigaAI

SaaS LigaAI PLG

传统链游的革新,PlatoFarm用实际行动回馈Dao社区

西柚子

为什么企业对私有化部署IM如此青睐有加?

WorkPlus

腾讯WeTest微信小程序上线啦!产品资讯一手掌握!

WeTest

中国设计师品牌Le Arome乐欧幕靠什么做到爆款10分钟售罄?

科技大数据

龙蜥开发者说:学无止境的 Linux ,以及我的第一个定制版本发布之路 | 第4期

OpenAnolis小助手

Linux 龙蜥社区 开发者说 宝贵经历

浅谈Java虚拟机(HotSpot)的内存回收相关细节

CRMEB

机器人流程自动化评估体系全面助力垂直行业智能化转型

王吉伟频道

RPA 机器人流程自动化 信通院

EMQ 映云科技为抗疫项目提供全托管 MQTT 云服务免费使用

EMQ映云科技

物联网 IoT mqtt emq 抗疫

玩转LiteOS组件:Openexif

华为云开发者联盟

LiteOS Huawei LiteOS Openexif Exif JPEG文件

结合实际案例谈谈项目管理经验

云智慧AIOps社区

学习 项目管理 pmp 软考 沟通技巧

想减少代码量,快设置一个有感知的 Aware Spring Bean

华为云开发者联盟

spring bean Aware 接口

软件开发中的风险如何处理?

源字节1号

微信小程序 软件开发

Module Federation在客服工单业务中的最佳实践

得物技术

前端 Module 模块 iframe Federation

智能化时代的数据集成技术革新

Apache SeaTunnel

大数据 开源 数据同步 Meetup Apache SeaTunnel

专访丨用友网络副总裁邹达:如何应对创新型数字化挑战?

YonBuilder低代码开发平台

jackson学习之三:常用API操作

程序员欣宸

4月月更

政企上云网络适配复杂,看华为云Stack有妙招

华为云开发者联盟

数据中心 云网络 华为云Stack 政企上云 L3GW服务

后端开发【一大波干货知识】定时器方案红黑树,时间轮,最小堆

Linux服务器开发

定时器 后端开发 红黑树 时间轮 Linux服务器开发

《数字经济全景白皮书》Z世代用户洞察篇(1)重磅发布!

易观分析

Z世代

接口自动化的关键思路和解决方案,本文全讲清楚了

Liam

Jmeter Postman API 测试工具 接口自动化测试

HertzBeat入GVP啦,并 v1.0.beta.7 发布,易用友好的云监控系统

TanCloud探云

开源 APM angular java;

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