BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Jonathan Allen 关注 524 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年5月4日. 估计阅读时间: 4 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

创建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<Customer>("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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

EF什么时候支持实体类的接口实现? by 江天 皓月

如题,对EF最不爽的就是无法对实体类进行接口抽象,这对OOP不友好。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT