2014-07-11 136 views
1

我需要意見。我在Efw 6.1的ASP MVC應用程序中使用了模型優先方法。因爲數據庫中有太多表(約200個),並且由於時間限制,我很難爲它編寫代碼。 是否有任何性能問題當模型第一技術用於任何大型數據庫應用程序而不是代碼優先?模型首先或代碼優先大數據庫

感謝

+1

DId你把一切努力做一些谷歌? –

+1

可能重複[在MS Entity Framework 4.1中Model First和Code First之間的性能差異?](http://stackoverflow.com/questions/6717042/is-there-a-performance-difference-between-model-第一個和第一個代碼優先) – Sayse

+0

@ArijitMukherjee我提到實體框架6.1 –

回答

2

在Visual Studio

  1. 在Solution Explorer中

  2. 右鍵單擊項目

  3. 實體框架 - 反向engenerieng

VS使用eighter之一,當創建

一)上下文

b)所有車型

2

不會有任何性能問題。使用你覺得最舒服的那個。

模型第一是偉大的,去爲它。

Long answer on the subject

+0

如果您發現重複,您應該標記爲這樣的問題 – Sayse

2

定義模型在EF您可以用代碼優先或「圖形」模式,你可以畫表和關係。請注意:

  • 有工具來反向工程DB既種型號,型號,或代碼第一次
  • 獨立形式存在的Code First或型號,內部,總有一個EDM在內存中,它是完全相同的(或者具有非常細微的差異)

因此,創建模型或代碼優先模型所用的時間是相同的。在維護模型時,你應該考慮一下你是否會對其中的某一個感覺更舒適。

如果您的模型將發展,請在Code First中使用遷移。在另一種情況下,您可以直接「右鍵單擊」選項將模型更改應用到數據庫。遷移使您可以更好地控制數據庫升級(甚至是降級)過程,並且它們可以輕鬆應用於開發數據庫,​​也可以應用於任何其他數據庫(生產,分期...)。

如果你擔心性能,正如我告訴兩種模型在記憶中都是相似的。在這兩種情況下,創建視圖最耗時的任務之一將花費相同的時間。當您的應用程序啓動並且第一次使用上下文時會發生這種情況。但是你可以使用Entity Framework Power Tools Beta 4預先創建這個視圖(不要擔心它是一個Beta 4,你可以放心使用,我已經使用這個工具多年了)。

正如您在EF Power Tool的鏈接中看到的那樣,它爲您的菜單添加了有趣的選項,但我正在談論創建視圖。您可以將它用於Code First或Model。

最後,如果你使用Code First,你可以創建幾個不同的上下文,每個上下文只有一部分表。如果這對你來說確實是一個問題,這將改善性能。

所以這個決定應該基於你的個人喜好和你的工作方式。如果您沒有首選項,我建議使用Code First,更新代碼中的實體,並使用遷移將更改應用到數據庫。認爲一個具有大量實體關係的非常大的模型可能會導致並看不到。在Code First中,您始終可以按名稱查找實體(類),或者在多個不同文件中組織實體。

作爲最後一點,大部分可以用模型完成的工作也可以使用Code First完成。除非你要做一些非常具體的事情,否則我懷疑這是選擇其中一個的理由。

+0

我發現遷移是一個正確的疼痛處理特別是如果您經常進行設計更改(可能在預alpha版本中)。就個人而言,除非您對數據架構計劃有相當大的信心,否則我不會推薦大數據集的代碼優先。 –

+1

這是令人驚訝的。此外,您可以隨時刪除遷移,並在需要時從頭開始,或者通過逆向工程來重新創建Code First模型。在這種情況下,我認爲一個有200個表格的模型應該有點穩定,遷移將有助於演變它。它給了edmx模型的「更新數據庫」更多的控制權。通過遷移,您可以爲更新創建腳本並對其進行檢查,甚至可以修改它,併爲遷移添加一些步驟。隨着模型的發展,這使得從開發到生產的變化變得非常容易。在edmx模型中無法完成 – JotaBe

+0

@MattThrower你用什麼來處理這些頻繁的變化?你的工作方式是什麼? – JotaBe

相關問題