2016-06-15 68 views
2

爲什麼從EF調用的SP(我正在使用版本6.1.3)與SQLCommand的ExecuteNoNQuery()& Datareader的SP執行時間相比需要時間? 我正在使用EF一個異步調用像如下─EF花費時間執行SP

public async Task<IList<T>> ExecSPAsync<T>(string query) 
    { 
     return await Context.Database.SqlQuery<T>(query).ToListAsync(); 
    } 

使用的SqlCommand/SqlDataReader對象似乎使用EF SP調用相比要高效得多。使用EF調用SP的有效方式是什麼?

+0

如果你存儲的返回值(n)varchar/binary(max),這可能是問題的原因。請參閱:http://stackoverflow.com/a/28619983/1236044 – jbl

+0

謝謝。調查我們正在做這件事的地方。 – vinayp

回答

0

您是否使用Code First?它是您的應用程序中的第一個查詢嗎? EF需要一段時間來編譯它的模型。 在此article中的解釋包括提高性能的步驟。

+0

謝謝。第一次查詢的確需要時間,但現在我們關注的是使用ADO.NET與EF執行SP。 – vinayp

+0

這僅僅是爲了信息,所以你不要試圖尋找一個錯誤,而不是。如果您擔心任何SP通過EF執行,由於它的複雜性,它總是需要一些附加時間。它在內部使用ADO.NET,並添加了一些額外的東西來使開發人員更容易。使用純ADO.NET總是更快,但需要更多開發人員的工作。您需要根據您的需求選擇合適的人。如果您需要儘可能快地創建內容,請使用ADO.NET。它不關心幾十毫秒,因爲它很容易使用,所以選擇EF。 –

+0

謝謝Václav.. – vinayp

相關問題