2016-06-15 67 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

相关问题