微软发布 EntityFramework 6.2 beta 1

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介:


123e262eaa36e7c3acf98924a77b9c95f9bb1d9c

5 月初,.NET 团队发布了一个 Core 2.0 实体框架的预览版本,这是 EF 对于 .NET Core 和 .NET Framework 的轻量级、可扩展和跨平台的版本。

5 月 23 日,Entity Framework runtime 和相应的 Visual Studio 工具的 6.2 beta 版本已经可用了。EF 6.2 是 Microsoft 更传统的对象/.NET Framework 关系映射器的新迭代。

将应用程序升级到 EF 6.2 beta 1 runtime

通常情况下,NuGet 会提供 EF 6 runtime 的预发行版本。在 Visual Studio 中,可以通过“Manage NuGet Packages”窗口(确保“Include prerelease”选项被选中)或“Package Manager Console”中的 NuGet 命令,实现应用程序中 EF 软件包的安装或更新。

例如,更新现有项目中的 beta 包:

PM> Update-Package EntityFramework -Version 6.2.0-beta1 -Pre

在新项目中安装 beta 包:

PM> Install-Package EntityFramework -Version 6.2.0-beta1 -Pre

升级 Visual Studio 中的 EF 工具

用户可以从 Microsoft 下载中心获取安装程序。只需要下载并安装与正在使用的 Visual Studio 版本对应的文件即可。

目前支持 Visual Studio 2012、2013 和 2015。请注意,目前并没有为 Visual Studio 2017 提供测试版的 EF 工具。因为 Visual Studio2017 需要使用不同的机制来将更新分发给 EF 工具这样的组件,.NET 团队计划稍后提供更新日期。

EF 工具的大部分代码是跨 Visual Studio 版本共享的,因此任何版本的测试都有助于验证 beta 版的质量。

如果用户只安装了 Visual Studio 2017,仍然可以将应用程序升级到使用 6.2 Beta 1 版本的 EF runtime,同时继续使用 Visual Studio 中包含的 EF 工具。

降低 Visual Studio 中的 EF 工具

当用户安装此测试版时,它会替换掉 Visual Studio 中包含的工具或安装的任何先前版本。如果用户在使用此测试版过程中,遇到任何问题, Visual Studio 附带的工具可以将工具还原到之前的版本。可以按照以下步骤进行操作:

  • 使用“添加/删除程序”,卸载 Visual Studio 的实体框架工具
  • 修复 Visual Studio 安装

EF 6.2 beta 1 中有什么新功能?

虽然 EF 团队的重点工作是为 EF Core 增加新功能和改进,但是也计划继续修复一些重要 bug,实施小型改进,并接受社区对 EF 6 代码库的贡献。

社区的开源贡献者为 EF 6.2 beta 1 版本的许多提升做出的巨大贡献,在此表示感谢。此版本的完整列表(包括即将推出的 PowerTools 版本中的错误修复)可在 GitHub query 中找到。

新功能中值得一提的有以下几点:

  • 通过从永久缓存#275 中加载第一个模型的完成代码来减少启动时间

可以通过将以下代码加入到应用中来实现该功能:

using System.Data.Entity; using System.Data.Entity.Infrastructure; namespace MyApplication
{ public class MyDbConfiguration : DbConfiguration
    { public MyDbConfiguration () : base()
        { this.SetModelStore (new DefaultDbModelStore (Directory.GetCurrentDirectory ())); 
        }
    }
}

提供程序报告无效键时 EF 工具更新模型的问题#243

在某些数据库逆向工程场景中,某些提供程序可能会错误地指示主键列为空。EF 工具不再将其报告为错误,而是会忽略不正确的可空性。

  • 添加 DbFunctions.Like(),使得可以在 SQL 中编写转换为 LIKE 的 LINQ 查询#241

用法如下:

var  query = db.People.Where(p=> DbFunctions.Like(p.Name,“w%”));
  • Migrate.exe 支持 support -选项#240
  •   启用使用命令行工具生成用于迁移的 SQL 脚本。
  • 使用参数过多时,从数据库更新大型模型可能导致 sp_executesql 失败#185

  这是与 SQL Server 大数据模型配合使用的长期问题。有关详细信息,请参阅“Call to action for provider writers”。

  • EF6 不能与序列主键一起使用#165
  •  现在可以采用与序列兼容的机制,在 runtime 使用标志来更改 EF 检索插入 SQL Serer 的生成值:
  • 更新 SQL Azure 执行策略错误号#83
  • 将额外的错误纳入到临时性错误列表,以便能够根据客户反馈和 Azure SQL 数据库上的新数据进行恢复。
  • 使用“The SqlParameter is already contained by another SqlParameterCollection”命令重试查询或 SQL 命令失败#81

  在使用重试执行策略时,该问题会影响多个 API。

  • 调试器中 DbQuery.ToString()的评估经常会超时#73

根据 Debugger 团队的建议,.NET 团队添加了一个新的 Sql 属性,以便在诸如 Autos,Locals 或 Watch 之类的调试窗口中 LINQ 查询被检查时使用。仍然可以使用`ToString()方法来获取 SQL,但调试器已经不会使用了。


<a href=https://yqfile.alicdn.com/80cdfa7455371564c4a9aa494c2c114d4659e8d5.png" >

为 provider 提供 Call to action

.NET 团队怀疑一些现有的 EF provider 可能会受到此版本中工具包含的修复的不利影响,因此请求 provider 的帮助来验证这一假设。

该修复程序解决了 EF 工具的“Update model from database”功能中使用模式发现查询长期存在的问题。对具有大量对象的数据库使用该功能时,模式发现查询可能会包含大量参数。特别是 SQL Server 对每个查询的参数限制为 2100,生成查询和参数的方式可能导致任何超过 300 个对象的模型失败。GitHub 问题更详细地描述了此问题:使用过多参数,从数据库更新大型模型可能导致 sp_executesql 失败#185。

有哪些改变

@bengutt 基于原有的想法并实现了这个修复程序,通过对每一个不同值使用重复利用参数对象,实现了模式发现查询所需参数的显著减少了。

该修复程序是在跨 provider 和所有当前和以前的 EF 版本中,使用共享代码实现的,这也可能会使非 SQL Server 的 provider 获益。因此希望尽可能多的 provider 使用此新版本。但是,如果对某些 provider 是破坏性的改变,那么将终止将 SQL Server 视作特殊案例的情况。

provider 会受到什么影响

任何利用 EF 查询功能来实现模式发现的 provider 都会受到影响。例如通过在数据库模式中提供自己的 SSDL 和 MSL 模型文件,只能受益于或不受参数数量的减少的影响。

然而,一些 provider 通过模式发现查询中的模式匹配来实现模式发现,然后将这些模式转化成原生模式发现 API 的调用。这样的提供者需要实现一些逻辑来将查询参数与查询中的过滤器相匹配。根据后一个实现方式的不同,如果参数的数量或顺序会随着修复程序改变,则可能会中断此参数。

如果你的 provider 因为修复而损坏,请报告

如果你的 provider 已损坏,请在 Call to action for provider writers: test compatibility with schema discovery queries in EF Tools 6.2 地 GitHub 问题下留言。#195

beta 1 之后是什么?

  • .NET 团队计划短期内在 EF 6 方面做下几件事情:
  • 正在考虑使用 Visual Studio 2017 的兼容性来发布一个 EF 6 PowerTools 的更新。
  • 一旦 .NET 团队收到并分析了 beta 版本的反馈,将决定是否需要发布另外一个预览版本,还是设定好 6.2 版本的最终发布日期。
  • 如前所述,.NET 团队将在后续发布 Visual Studio 2017 的 EF 6.2 工具。

目前已有很多产品支持 EF,其中值得一提的是 ComponentOne,ComponentOne 基于 EF6 的版本能够帮助用户充分发掘 EF6 的潜力并使其在 WinForms 应用中更加易用。

文章转载自 开源中国社区 [http://www.oschina.net]

相关文章
|
4月前
|
人工智能 数据安全/隐私保护 Python
小红书图文生成器,小红书AI图文生成工具,python版本软件
Pillow库自动生成符合平台尺寸要求的配图7;3)利用Playwright实现自动化发布流程6。
|
4月前
|
XML 数据库 数据安全/隐私保护
QQ卡片XML消息生成工具,qq卡片代码生成器,网址一键生成QQ卡片
这个QQ卡片生成工具包含完整的XML生成逻辑、工具类、Web服务和配置模块。主模块QQCardGenerator.py实
|
5月前
|
Java 计算机视觉
医院证明图片制作生成工具,病假条证明图片生成器, 医院报告单p图软件【仅供娱乐】
报告单P图软件的Java实现,包含多个模块,仅供娱乐用途。代码实现了基本的图像处理和文本叠加功能。
|
7月前
|
安全 前端开发 Android开发
拥抱国产化:转转APP的鸿蒙NEXT端开发尝鲜之旅
本文将要分享的是转转APP在开发全新鸿蒙NEXT端所遇到的一些问题,对比了鸿蒙开发和 Android、iOS 的不同,总结了这次开发过程中的一些经验等等。希望能带给你启发。
301 0
|
10月前
|
人工智能 测试技术
陶哲轩联手60多位数学家出题,世界顶尖模型通过率仅2%!专家级数学基准,让AI再苦战数年
著名数学家陶哲轩联合60多位数学家推出FrontierMath基准测试,评估AI在高级数学推理方面的能力。该测试涵盖数论、实分析等多领域,采用新问题与自动化验证,结果显示最先进AI通过率仅2%。尽管存在争议,这一基准为AI数学能力发展提供了明确目标和评估工具,推动AI逐步接近人类数学家水平。
390 37
|
8月前
|
Windows
电脑网络图标消失了怎么办?3步教你找回,简单快捷!
当电脑网络图标消失,宽带和WiFi图标变成一个球时,可通过以下步骤解决:1. 使用快捷键`Win+R`输入`services.msc`进入服务管理器;2. 找到并启动Wired AutoConfig、WLAN AutoConfig和WLAN Direct服务,设置启动类型为自动;3. 重启电脑验证问题是否解决。此方法可恢复网络功能。
927 0
|
9月前
|
人工智能 弹性计算 算法
【云故事探索】NO.5:PETKIT 小佩,科技与爱,共绘宠物智能生活新篇章
【云故事探索】NO.5:PETKIT 小佩,科技与爱,共绘宠物智能生活新篇章
226 0
|
缓存 测试技术 C#
使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题
【10月更文挑战第20天】本文介绍了使用 Radzen Blazor 组件库开发基于 ABP 框架的炫酷 UI 主题的步骤。从准备工作、引入组件库、设计主题、集成到 ABP 框架,再到优化和调试,详细讲解了每个环节的关键点和注意事项。通过这些步骤,你可以打造出高性能、高颜值的应用程序界面。
479 1
|
存储 Ubuntu 网络协议
Linux命令hostname:探索你的主机名
`hostname`命令在Linux中用于显示或设置主机名,它是系统管理和网络配置的关键工具。简单易用,可查看(`hostname`)或通过参数如`-s`设置短主机名,`-F`指定主机名文件。示例:查看主机名、使用`hostnamectl`或直接`hostname`命令设置新主机名,以及将新名写入`/etc/hostname`。注意,更改可能需管理员权限,并影响网络配置。