我正在开发一个使用 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。