本帖最后由 断天涯大虾 于 2017-5-31 11:42 编辑
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附带的工具可以将工具还原到之前的版本。可以按照以下步骤进行操作: EF 6.2 beta 1中有什么新功能? 虽然EF团队的重点工作是为EF Core增加新功能和改进,但是也计划继续修复一些重要bug,实施小型改进,并接受社区对EF 6代码库的贡献。 社区的开源贡献者为EF 6.2 beta 1版本的许多提升做出的巨大贡献,在此表示感谢。此版本的完整列表(包括即将推出的PowerTools版本中的错误修复)可在GitHub query中找到。
新功能中值得一提的有以下几点: 可以通过将以下代码加入到应用中来实现该功能: - 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工具不再将其报告为错误,而是会忽略不正确的可空性。
用法如下: var query = db.People.Where(p=> DbFunctions.Like(p.Name,“w%”));
启用使用命令行工具生成用于迁移的SQL脚本。
现在可以采用与序列兼容的机制,在runtime使用标志来更改EF检索插入SQL Serer的生成值:
将额外的错误纳入到临时性错误列表,以便能够根据客户反馈和Azure SQL数据库上的新数据进行恢复。
在使用重试执行策略时,该问题会影响多个API。
根据Debugger团队的建议,.NET团队添加了一个新的Sql属性,以便在诸如Autos,Locals或Watch之类的调试窗口中LINQ查询被检查时使用。仍然可以使用`ToString()方法来获取SQL,但调试器已经不会使用了。 为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应用中更加易用。
关于葡萄城 葡萄城是全球最大的控件提供商,世界领先的企业应用定制工具、企业报表和商业智能解决方案提供商,为超过75%的全球财富500强企业提供服务。 转载请注明出自:葡萄城控件 |