写点什么

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

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

关注

评论

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

企业上云数据安全不容忽视,华为云ERP上云解决方案全面保障信息安全

YG科技

深度解读:ASP.NET Core Blazor 含快手入门教程

EquatorCoco

asp.net

基于 Flink CDC 构建 MySQL 到 Databend 的 实时数据同步

Databend

AI血洗时尚圈!就连这些线上店家都开始用AI生成爆款商品了

Openlab_cosmoplat

人工智能 AI

Nautilus Chain:模块化Layer3的先行者

BlockChain先知

英特尔研究院发布全新AI扩散模型,可根据文本提示生成360度全景图

E科讯

Nautilus Chain:模块化Layer3的先行者

西柚子

学习 SSL/TLS ,这一篇就够了

火山引擎边缘云

TLS 证书 SSL证书

沙利文发布《2023中国数据管理解决方案市场报告》,腾讯云位列领导者梯队

说山水

2023-06-21:redis中什么是BigKey?该如何解决?

福大大架构师每日一题

redis 福大大架构师每日一题

CC2530+ESP8266与手机APP通信

DS小龙哥

6 月 优质更文活动

敏捷项目管理工具大全

顿顿顿

敏捷项目管理 敏捷工具 scrum工具

Django笔记四十四之Nginx+uWSGI部署Django以及负载均衡操作

Hunter熊

Python nginx django 负载均衡 uwsgi

大规模 AI 高性能网络的设计与实践

Baidu AICLOUD

大模型训练 RDMA

作为ISV,这是我为什么选择华为云ECS的理由

平平无奇爱好科技

中国自动驾驶发展加速,已实现多场景落地应用

来自四九城儿

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

福大大架构师每日一题

Java Go 福大大架构师每日一题

HAG宣布在INX平台进行STO发行

股市老人

作为IT从业者,为什么我推荐华为云ECS?

平平无奇爱好科技

企业OA上云靠谱最重要,多年业务推进为何华为云成为我的首选?

平平无奇爱好科技

自动驾驶的必要技术和等级

来自四九城儿

自动驾驶发展依旧处于初步阶段

来自四九城儿

从实际业务出发,OA上云我更推荐华为云

平平无奇爱好科技

聊一聊“会员制”

鲸品堂

会员中心 付费会员 企业号 6 月 PK 榜

把金融航母开进智能峡湾,总共分几步?

脑极体

华为 AI 金融

Kubernetes集群授权管理

穿过生命散发芬芳

Kubernetes 6 月 优质更文活动

OpenHarmony自定义组件

坚果

OpenHarmony 6 月 优质更文活动

火山引擎Dataleap数据质量解决方案和最佳实践(一):数据质量挑战

字节跳动数据平台

数据治理 数据开发 数据质量 数据研发

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

Nautilus Chain:模块化Layer3的先行者

大瞿科技

Nautilus Chain:模块化Layer3的先行者

股市老人

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