3

最終部署到使用實體框架Code First和MySql構建的新網站後,一個惱人的煩惱就是緩存視圖元數據時經常遇到的暫停。這似乎比應用程序池被回收的頻率要高得多。 (?)EF代碼優先的預生成視圖

我想對於一個擁有恆定流量的網站來說,這可能不會經常被注意到。對於流量不頻繁的新網站,感覺像每次訪問該網站時,第一頁的渲染都會延遲4-5秒。

所以我就找到了下面的鏈接:

http://msdn.microsoft.com/en-us/library/bb896240.aspx

http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

的EF電動工具CTP1看起來前途無量,除了因爲它似乎是EF 4.3和不是招被打破」已經更新了幾個月。此外,我不確定該工具如何適應我們的自動構建過程。該EF電動工具的使用拋出這個錯誤

System.Reflection.TargetInvocationException: 
Exception has been thrown by the target of an invocation. ---> System.Data.ProviderIncompatibleException: The provider did not return a ProviderManifestToken string. ---> System.Data.SqlClient.SqlException: 
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 

我最初以爲這可能是mysql有關,但

的OptimizeContext()或WriteEdmx()方法中的一些人對EF電動工具Q &一節報告。

因此,簡而言之,我如何爲EF 4.3代碼首先預生成視圖,最好能插入自動生成過程中?

+2

根據[本文](http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx)電動工具CTP 2應該很快就可以使用,我想新版本將支持EF 4.3和EF 5. – 2012-03-27 12:07:37

+0

因此,在浪費了幾個小時的時間之後,MySql似乎成了問題的一部分,這篇文章解決了這個問題。 http://www.devart.com/blogs/dotconnect/index。php/using-entity-framework-power-tools-ctp1-with-oracle-mysql-postgresql-and-sqlite.html 我需要弄清楚剩下的事情是如何生成Context.View.cs文件作爲部分我們的構建過程。 我會詢問EF Power Tools問題解答並報告,以便幫助其他人解決問題。 – NickH 2012-03-27 12:54:04

+0

http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx:「EF Power Tools Beta 2即將推出 實體框架有在過去的6個月中取得了很大進展,我們已經讓Power Tools落後了,目前我們正在開發一個更新版本,我們的目標是在接下來的幾周內推出。「 – Pawel 2012-03-27 20:31:13

回答

1

帕維爾回答我相關的問題:

Entity Framework initialization is SLOW -- what can I do to bootstrap it faster?

通過建立T4模板:

http://blog.3d-logic.com/2012/05/28/entity-framework-code-first-and-pre-generated-views/

這也並不完美,但比其他任何東西,我有更多的可用看到。

然後,你可以這樣做:

http://www.platinumbay.com/blogs/dotneticated/archive/2009/08/28/running-t4-templates-with-msbuild.aspx

將其添加到構建過程,但是這有點慢,所以你可能只想把它作爲(另)一個手動工序更新EF模型。

真的,他們需要警告說,不要使用EF 500以上的表格,它會變得越來越討厭使用。

0

我在運行VS2010,EF v4.3.1和Entity Framework Power Tools Beta 2時遇到了同樣的錯誤。對於我來說,解決方案是以管理員身份運行Visual Studio。 (通過右鍵單擊圖標並從上下文菜單中選擇「以管理員身份運行」完成)。此時,我可以使用EFPT中的「生成視圖」選項。