我正在开发一个使用EntitySpaces作为ORM的项目。
下面您将看到一个简化的ItemCollection方法,它通过调用存储过程来加载集合:
public partial class ItemCollection : esItemCollection
{
public bool LoadItemsUsingSomeStoredProcedure(string aLotOfAttributes, out int totalCount)
{
// Set a lot of parameters
esParameters parameters = new esParameters();
// ...
bool result = Load(esQueryType.StoredProcedure, "ItemsStoredProcedure", parameters);
totalCount = (int) paramTotalCount.Value;
return result;
}
}
使用SQL Server Profiler我看到这导致了对数据库的调用:
declare @p5 int
set @p5=485
exec [ItemsStoredProcedure] @Param1=4,@Param2=N'41',@Param3=N'SomeValue',@Param4=0,@TotalCount=@p5 output,@Param5=1,@Param6=25
select @p5
完成需要约200秒。
但是:当我在SQL Management Studio中运行相同的SQL代码段(本地和远程)时,需要大约4~5秒才能完成。
为什么EntitySpaces调用完成的时间比SQL客户端要长40倍?任何想法如何调试/改进?
PS:替换EntitySpaces在我的WANT列表中很高,但是一如既往地说服客户花一个月的时间来重构“工作”程序真的很难......所以这个选项已经出来了,atm。答案 0 :(得分:0)
不要从Visual Studio运行它,这是所有应用程序的已知问题,EntitySpaces几乎没有任何时间添加到SqlClient并实现任何ORM中最快的。