每次我需要从数据库更新我的emdx时,更新向导都会花费大量的时间来完成这个任务,因为当您点击完成(完成更新)按钮时,它会自动呈现为没有响应。更新向导没有响应
我使用Visual Studio 2015和LocalDb SQL Server 2014.有人建议安装Service Pack 1来解决该问题。我已经安装了SP1的LocalDb,但它没有帮助。我的VS2015的安装也相当新颖。
我有最新的Entity Framework 6版本(来自nuget)。
每次我需要从数据库更新我的emdx时,更新向导都会花费大量的时间来完成这个任务,因为当您点击完成(完成更新)按钮时,它会自动呈现为没有响应。更新向导没有响应
我使用Visual Studio 2015和LocalDb SQL Server 2014.有人建议安装Service Pack 1来解决该问题。我已经安装了SP1的LocalDb,但它没有帮助。我的VS2015的安装也相当新颖。
我有最新的Entity Framework 6版本(来自nuget)。
将数据库的兼容性级别设置为110已适用于我。
要检查兼容性级别,运行此脚本:
select compatibility_level from sys.databases where name = '<YOUR_DB_NAME>'
要设置兼容级别,使用这个脚本:
alter database <YOUR_DB_NAME> set compatibility_level = 110
更改SQL Server兼容级别或跟踪标志9481没有我的选择。
我给EntityFramework Reverse POCO Generator试试。
https://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838
这是一个可配置的通用模板T4和工作得很好至今。
它甚至具有用于跟踪提到标志
IncludeQueryTraceOn9481Flag =假一个选项; //如果SqlServer 2014冻结/需要很长时间才能保存该文件,请尝试将其设置为true(您还需要提升权限)。
讽刺的是它的工作速度快,即使标志为无效:) 好像他们正在使用的元数据不同的查询比VS EF设计。
今天,我的同事和我离开了巫师,让它更新了约10分钟。虽然花了相当长的一段时间,但确实完成了。这对我们来说是最好的解决方案(现在),因为我们无法在没有适当权限的情况下设置我们数据库的兼容级别。
是的,它的工作的对话框,而是在一个非常长的时间而改变。 – Santhos
@Santhos是的,它很刺激。前些日子我花了大约30分钟更新一个大型模型。非常令人沮丧。 – sparkyShorts
运行在DB以下工作对我来说:
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=ON
然后,在更新之后,设置回用:
ALTER DATABASE SCOPED CONFIGURATION SET LEGACY_CARDINALITY_ESTIMATION=OFF
这是每this thread了在Github上的EF6回购。
应当指出的是,在该线程也上报工作下,虽然我没有测试它,因为前者的工作这么好,我:
UPDATE STATISTICS sys.syscolpars
UPDATE STATISTICS sys.sysschobjs
UPDATE STATISTICS sys.syssingleobjrefs
UPDATE STATISTICS sys.sysiscols
他们还踢这回SQL服务器并在Microsoft Connect上开放了this issue。
这对我有用。请注意:接受的答案设置数据库兼容性级别。我相信将其设置为110会对传统基数进行估计。在尝试接受答案之前,我们需要更多的人测试这个答案。 –
我认为'ALTER DATABASE'仅适用于SQL Server 2016.2014版不能识别该命令。它承认虽然这些更新但他们没有帮助,巫师也有同样的问题。对我有用的是改变兼容性级别。 – Andrew
很高兴知道@安德鲁!谢谢。 –
检查您的web.config本地sql实例。不是遥远的。
我仍然必须使用实体框架6.2.0与Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64) Jul 3 2017 02:25:44 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600:) (Hypervisor)
做到这一点。这个世界如何还没有解决?!
同样在这里使用Visual Studio 2015和SQL实服务器2014 – jens
@jens你设法解决这一问题? – Santhos
我们认为这是由于SQL Server 2014中基数估计器的回归。我们之前在EF Tools中引入了一种解决方法,它将OPTION(QUERYTRACEON 9481)附加到我们所有的模式查询中(请参见http://entityframework.codeplex。 com/workitem/2445了解更多细节),但不幸的是引入了功能性回归,例如如果用户没有足够的数据库权限,模式查询就会失败,所以我们不得不采取解决方法。 回归似乎是固定的,但最近我们有新的报告。我们正在跟进SQL Server。 – divega