2015-09-21 28 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)做到這一點。這個世界如何還沒有解決?!