C# EF需要时间来执行SP

C# EF需要时间来执行SP,c#,entity-framework,ado.net,C#,Entity Framework,Ado.net,为什么从EF调用SP(我使用的是版本6.1.3)比SQLCommand的ExecuteOnQuery()和Datareader的SP执行时间要花时间? 我正在使用EF进行异步调用,如下所示- public async Task<IList<T>> ExecSPAsync<T>(string query) { return await Context.Database.SqlQuery<T>(query).ToListAsyn

为什么从EF调用SP(我使用的是版本6.1.3)比SQLCommand的ExecuteOnQuery()和Datareader的SP执行时间要花时间? 我正在使用EF进行异步调用,如下所示-

public async Task<IList<T>> ExecSPAsync<T>(string query)
    {
        return await Context.Database.SqlQuery<T>(query).ToListAsync();
    }
public异步任务ExecSPAsync(字符串查询)
{
返回wait Context.Database.SqlQuery(query.ToListAsync();
}

与使用EF的SP调用相比,使用SQLCommand/SQLDatareader似乎效率更高。使用EF调用SP的有效方法是什么?

您是先使用代码吗?这是应用程序中的第一个查询吗?EF编译其模型需要一些时间。
本节介绍了提高性能的步骤。

如果存储返回(n)varchar/binary(max),这可能是问题的原因。看:谢谢。调查我们正在做这件事的地方。谢谢。第一次查询确实需要时间,但是现在我们关心的是使用ADO.NET vs EF执行SP。这只是为了获取信息,所以您不会试图在错误不存在的地方查找错误。如果您担心通过EF执行任何SP,那么由于其复杂性,它将始终需要一些传统的时间。它在内部使用ADO.NET,并添加了一些额外的东西,使开发人员的工作变得简单。使用纯ADO.NET总是更快,但需要更多的开发人员工作。你需要根据自己的需要选择合适的。如果您需要尽可能快地完成任务,请使用ADO.NET。如果您不关心数十或数百毫秒,请选择EF,因为它易于使用。