2015-09-21 29 views
23

每次我需要从数据库更新我的emdx时,更新向导都会花费大量的时间来完成这个任务,因为当您点击完成(完成更新)按钮时,它会自动呈现为没有响应。更新向导没有响应

我使用Visual Studio 2015和LocalDb SQL Server 2014.有人建议安装Service Pack 1来解决该问题。我已经安装了SP1的LocalDb,但它没有帮助。我的VS2015的安装也相当新颖。

我有最新的Entity Framework 6版本(来自nuget)。

+0

同样在这里使用Visual Studio 2015和SQL实服务器2014 – jens

+0

@jens你设法解决这一问题? – Santhos

+5

我们认为这是由于SQL Server 2014中基数估计器的回归。我们之前在EF Tools中引入了一种解决方法,它将OPTION(QUERYTRACEON 9481)附加到我们所有的模式查询中(请参见http://entityframework.codeplex。 com/workitem/2445了解更多细节),但不幸的是引入了功能性回归,例如如果用户没有足够的数据库权限,模式查询就会失败,所以我们不得不采取解决方法。 回归似乎是固定的,但最近我们有新的报告。我们正在跟进SQL Server。 – divega

回答

51

将数据库的兼容性级别设置为110已适用于我。

要检查兼容性级别,运行此脚本:

select compatibility_level from sys.databases where name = '<YOUR_DB_NAME>' 

要设置兼容级别,使用这个脚本:

alter database <YOUR_DB_NAME> set compatibility_level = 110 
+0

澄清,它是否设置为之前?之前设置为70,80,90,100,120或140吗? – Dai

+1

我认为我的原始值是120,但自从我做手术以来已经有一段时间了。我也相信原始值可以根据您拥有的本地SQL版本而有所不同。 – Santhos

+1

工作就像一个魅力对我来说。任何人都可以对此有所了解,为什么我们必须将兼容性级别设置为110?它有任何副作用吗? – Waheed

1

更改SQL Server兼容级别或跟踪标志9481没有我的选择。

我给EntityFramework Reverse POCO Generator试试。

https://visualstudiogallery.msdn.microsoft.com/ee4fcff9-0c4c-4179-afd9-7a2fb90f5838

这是一个可配置的通用模板T4和工作得很好至今。

它甚至具有用于跟踪提到标志

IncludeQueryTraceOn9481Flag =假一个选项; //如果SqlServer 2014冻结/需要很长时间才能保存该文件,请尝试将其设置为true(您还需要提升权限)。

讽刺的是它的工作速度快,即使标志为无效:) 好像他们正在使用的元数据不同的查询比VS EF设计。

2

今天,我的同事和我离开了巫师,让它更新了约10分钟。虽然花了相当长的一段时间,但确实完成了。这对我们来说是最好的解决方案(现在),因为我们无法在没有适当权限的情况下设置我们数据库的兼容级别。

+1

是的,它的工作的对话框,而是在一个非常长的时间而改变。 – Santhos

+0

@Santhos是的,它很刺激。前些日子我花了大约30分钟更新一个大型模型。非常令人沮丧。 – sparkyShorts

17

运行在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

+1

这对我有用。请注意:接受的答案设置数据库兼容性级别。我相信将其设置为110会对传统基数进行估计。在尝试接受答案之前,我们需要更多的人测试这个答案。 –

+1

我认为'ALTER DATABASE'仅适用于SQL Server 2016.2014版不能识别该命令。它承认虽然这些更新但他们没有帮助,巫师也有同样的问题。对我有用的是改变兼容性级别。 – Andrew

+0

很高兴知道@安德鲁!谢谢。 –

-5

检查您的web.config本地sql实例。不是遥远的。

1

仍然必须使用实体框架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)做到这一点。这个世界如何还没有解决?!