2012-10-27 96 views
1

我有一個由數據庫生成一個相當大的EDMX提高我的EDMX的性能,我一直在努力表現最近,以提高我的應用程序已經在各種各樣的地方有的在這裏讀了一些文章一些不我想通過使用AutoDetectChanges

變化http://msdn.microsoft.com/en-us/data/jj556205.aspx

這一項上刪除DbContext is very slow when adding and deleting

這一個提高性能(我認爲這是相當不錯的)http://www.codeproject.com/Articles/38922/Performance-and-the-Entity-Framework

的這一項上禁用自動檢測

我已經使用myentities.tablename.MergeOption = MergeOption.NoTracking,我使用compiledqueries,我預先生成使用EdmGen我認爲,我已經減少了我獲取等方面的數據...,當然,我已經獲得了性能這樣一個54秒加載的頁面現在需要16.1秒 - 但是我必須把它加到3秒所以我仍然在尋找下一個改進

所以研究是一切都很好,結果我已經升級到了最新的EntityFramework,我已經從再生等分貝的.edmx我......並嘗試了各種東西,但我根本就不是爲了其設置爲false找到myEntities.Configuration.AutoDetectChangesEnabled。現在我必須錯過一個簡單的訣竅 - 我如何讓我的EDMX有這個選項。

我在這個environment.Net 4.0.3,Visual Studio 2010,最新版本的EntityFramework,MVC 4.0 ...我需要的是有人說「啊哈」你需要去做這個....

目前,如果我從我的大表(134million行)需要近10分鐘的SaveChanges之一刪除1000條記錄。所以從我讀的AutoDetectChangesEnabled是我需要改變但它不存在於我的類?我該怎麼做才能得到它?

任何幫助表示讚賞我試圖解決這一快速

問候朱利安

回答

1

對,我終於發現,說明什麼是必要的,以更改數據庫第一EDMX成具有.Configuration.AutoDetectChangesEnabled這是偉大的,我是能夠取得進展的版本上的計算器Get DbContext for Entities這個項目。然而,這並沒有讓我找到我正在尋找的解決方案,因爲刪除正在保存的內容仍然花費了過多的時間。

因此,道德的,是適用於所有的表演技巧 預生成您的看法, 使用AutoDetectChangesenabled = TRUE, 使用編譯查詢, 創造的,而不是先獲取數據, 等虛假對象 智能連接字符串... 你或許可以在大多數情況下,也都是可以接受的,但如果你真的需要儘快做的事情,你需要去TSQL,並用手做

問候朱利安

+0

作爲額外的評論,我通過讓SQL使用級聯刪除外鍵,在舊的sql語句我這樣做時,它的表現不佳,但是在SQL 2008 R2級聯刪除是揭開謎底的下一部分做刪除改進了刪除我需要 –

+0

這個跟進,解決方案的一部分是向上移動到EF 5.0,和一切的最新版本...這意味着大量的重構代碼的。然而,答案似乎與英孚,如果它的緩慢,你需要更新到最新......痛苦但最好的解決方案 –

0

AutoDetectChanges坐在DbContext.Configuration.AutoDetectChangesEnabled。爲刪除你也可以嘗試是讓你想刪除,創建只有這些ID設置假目標,重視這些對象ID的列表,並要將其刪除。

然而,我們最近也有類似的問題,我們目前正在與ADO.NET刪除。 (或者在DbContext上可以推送SQL的方法)。一般來說,EF對我們的應用程序非常有用,但是在2-3個地方我們需要性能,因爲記錄數量巨大。不幸的是,我們不得不在這些地方使用ADO.NET,當您使用海量數據時,速度要快很多倍。

+0

我沒有.Configuration性能在我的課上它不存在,我如何創建我的EDMX,以便它。是的,我剛纔已經獲取的ID,創建一個假的對象,附加到實體,做刪除.....它的保存是一個殺手。我的問題是如何獲得的選項.Configuration.AutoDetectChanges - 因爲它doenst我 –

+0

只是一些猜測存在:「最新版本EF的」 - 你的意思是5.0,對不對?您是否進行了全新安裝 - 即,如果您安裝了4.2 CTP,則應該在安裝新版本之前卸載它。你使用的是什麼代碼生成模板? –

+0

沒有我缺少信息的基本位,我需要改變我的數據庫生成使用EDMX細節本文http://stackoverflow.com/questions/11180250/get-dbcontext-for-entities感謝反正 –