写点什么

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

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

关注

评论

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

DApp 链上合约质押挖矿系统开发丨技术搭建

l8l259l3365

开源分布式数据库 TiDB 架构以及HTAP 的实现

TiDB 社区干货传送门

TiDB 底层架构

实时计算Flink集成开源连接器-TiDB CDC Connector案例实践

TiDB 社区干货传送门

实践案例 应用适配 数据库连接

iOS应用审核问题解决方案及优化方法 ✨

雪奈椰子

微隔离,做到真正零信任

德迅云安全杨德俊

不再等待直接上答案,百度智能云推出数据库 Copilot

Baidu AICLOUD

数据库 大模型

教你用python爬取『京东』商品数据,原来这么简单!

技术冰糖葫芦

API 接口

详细教程:如何制作产品介绍二维码(二)

草料二维码

二维码 草料二维码 干货分享

数据本地性如何助力企业在云上实现高效机器学习

Alluxio

机器学习 gpu 模型训练 云存储 Alluxio

容器架构下的性能测试实践方法

老张

性能测试 容器化

MES系统跟车间设备怎么连接?设备管理后的好处有哪些?

万界星空科技

数据采集 mes 设备管理 万界星空科技 智能设备管理

牛市下一个板块该轮到谁?Gamefi赛道爆发你吃到了多少?

威廉META

通过TiOperator备份数据到共享存储

TiDB 社区干货传送门

实践案例 集群管理 故障排查/诊断 备份 & 恢复

绕过 MVCC 影响的 TiDB Delete 数据方法

TiDB 社区干货传送门

管理与运维 7.x 实践

cURL 命令全面解析:提高工作效率

Apifox

程序员 前端 后端 API curl

金三银四 | 软件测试开发岗求职攻略来袭,快来抢先一步!

测试人

软件测试

TiKV 状态变化

TiDB 社区干货传送门

在 GraalVM 静态编译下无侵入实现可观测探索

阿里巴巴云原生

Java 阿里云 云原生

TIDB 分区表使用实践

TiDB 社区干货传送门

6.x 实践

一文了解TiDB的数据对比工具sync-diff-inspector

TiDB 社区干货传送门

实践案例

Java jdbc 驱动 maxPerformance 配置避坑

TiDB 社区干货传送门

开发语言 应用适配 数据库连接

月活超 1.1 亿,用户超 4 亿,你也在用的「知乎」是如何在超大规模 TiDB 集群上玩转多云多活的?

TiDB 社区干货传送门

实践案例 社区活动 数据库前沿趋势 OLTP 场景实践

万字心路历程:从十年老架构决定重构开始

阿里巴巴云原生

阿里云 云原生 iLogtail

开源一个教学型分库分表示例项目 shardingsphere-jdbc-demo

EquatorCoco

数据库 开源 分布式

Puppet 2024年度报告:平台工程发掘 DevOps 无限潜质

SEAL安全

DevOps 平台工程 puppet

【干货】需求驱动的配货

第七在线

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