2014-01-05 31 views
1

有沒有人有從經典SQL遷移到EF的經驗。mvc classic sql vs EF

我熟悉這個代碼:

using(MySqlConnection b = new MySqlConnection()) { 
    b.ConnectionString = varAccordingToServer.StandardMySQLConnectionString; 
    b.Open(); 
    c.Connection = b; 
    c.CommandText = "select count(*) from myTable where condition='1'"; 
    string t = c.ExecuteScalar().ToString(); 
} 

如果我開始使用EF,會不會有任何性能損失?

謝謝,

+0

你是否嘗試過先測量自己? –

回答

4

隨着偉大的抽象會帶來巨大的性能損失。

是的,可能會有一些性能損失,但在大多數應用中並不重要。 我建議你嘗試EF方式,如果你證明它的某些部分阻礙了性能,請專門優化這部分。英孚可能會提高你的代碼和團隊的速度,以至於你以後會有時間擔心性能。

+1

一般來說,+1。我不太確定'改進代碼和團隊',你可以用EF或不用EF來做可怕的事情,但是對於大多數用例,我認爲強類型查詢比'stringly typed'SQL更重要。分析揭示瓶頸時,您可以始終通過EF使用原始SQL或使用Dapper或其他micro-ORM。 –

+1

我同意I3armon;訣竅在於不要成爲EF的奴隸 - 在您的解決方案中很可能會有部分內容,其中直接SQL更適合出於多種原因 - 性能,解決方案的清晰度。無需部署即可修改... –

+0

..甚至存儲過程。無論什麼最適合。 – i3arnon

2

是的,每當您選擇一個ORM工具(如EF或NHibernate)時都會出現性能損失。儘管如此,業績損失可能微不足道。現在,你最擔心的應該是性能,你將看到的主要麻煩是使用一個完全支持MySql實體框架的連接器......好吧,我假設你的後端數據庫是一個MySql數據庫。我仍然沒有碰到一個不支持某些功能的連接器。