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

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

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

关注

评论

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

谈谈测试环境管理与实践

大卡尔

测试环境 工程效能

破茧成蝶!从投简历石沉大海到收割5个大厂offer,我只刷了这套面试题!

Java架构追梦

Java 阿里巴巴 架构 面试 offer

涵盖了Java基础+JVM+多线程并发编程+spring全家桶+Linux+数据结构+数据库+nginx+分布式,这份Java技术成长笔记太强了

Java架构之路

Java 程序员 架构 面试 编程语言

第八大洲环游记(三):人间胜境新西兰,AI孤岛or方舟?

脑极体

网络攻防学习笔记 Day6

穿过生命散发芬芳

5月日更 网络攻防

Vue 组件通信的 8 种方式

程序员海军

Vue 大前端 组件通信 引航计划

模板格式不统一?百度AI产品经理为你讲解如何高效构建定制化OCR模型

百度大脑

百度 AI OCR

Golang 实现 RTP

天黑黑

音视频 rtp Go 语言

Map在Java 8中增加非常实用哪些函数接口?

xcbeyond

Java java8 5月日更 内容合集

如何高效率的度过一天?

程序员海军

效率 方法论

前端项目配置ts,axios,router,vuex

Vue js ts vuex VueRouter

Golang中runtime包的基本使用方式

liuzhen007

Go 语言 5月日更

京东丨阿里丨携程面试总结,已成功拿到京东offer

Java架构师迁哥

北大学霸!手抄万字Java数组笔记,2小时吃透,你确定不拿走?

牛哄哄的java大师

Java 后端

2021金三银四(拿下5个offer)面试经历,附阿里4面+京东4面【面经分享】

Java 编程 程序员 面试 计算机

谷歌大佬的LeetCode算法刷题笔记,详细讲解了刷 LeetCode 时常用的技巧。

Java架构之路

Java 程序员 架构 面试 编程语言

所谓软件测试工作能力强,其实就是这5点

程序员阿沐

软件测试 自动化测试 测试工程师 黑盒测试 白盒测试

如有神助!阿里P7大牛把Spring Boot讲解得如此透彻,送你上岸

飞飞JAva

深入了解 JavaScript 对象

程序员海军

JavaScript 大前端 对象

区块链是什么意思?源中瑞开发BaaS平台促进企业数字转型升级

源中瑞-龙先生

企业数字化转型 #区块链# 源中瑞 Baas

2021,国产数据库人的最好时代

BinTools图尔兹

数据安全 数据库管理 国产数据库

要不要去创业?

石云升

创业 5月日更

一个江南皮鞋厂的小故事带我理解透了——什么是“代理模式”

Java架构师迁哥

从操作系统底层的IO原理入手讲解,同时提供高性能开发的实战案例!美团大佬最新总结的1053页Java高并发核心编程笔记!

Java架构之路

Java 程序员 架构 面试 编程语言

spring boot项目TPS压测性能优化

李日盛

Spring Boot 性能调优

架构实战营详细架构设计文档模板

Geek_e0c25c

一击必杀!内网渗透——对不出网目标的精准打击

Thrash

安全

Dubbo 服务分组与多版本

青年IT男

编程规范的意义

顿晓

5月日更 编程规范

Redis - 哈希表

旺仔大菜包

redis

全靠这套大厂Java面试题目指南,让我成功斩获 25*16 薪资的offer

飞飞JAva

Java

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