1

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

4

1 回答 1

0

不要从 Visual Studio 运行它,这是所有应用程序的一个已知问题,EntitySpaces 几乎不会向 SqlClient 增加任何时间,并且实现了任何 ORM 中最快的。

http://www.entityspaces.net/www.entityspaces.net/blog/2010/08/26/The%20EntitySpaces%20ORMBattleNET%20Performance%20Numbers.aspx.html

于 2013-10-18T17:21:23.700 回答