从Entity框架调用存储过程n次

时间:2011-03-04 16:49:25

标签: performance stored-procedures entity-framework-4

我在数据库上有一个存储过程,我需要在Entity Framework中多次调用它。

    public Points GetResults(Share share, DateTime startDate, DateTime endDate)
    {
        using (var ctx = new MyDatabaseEntities())
        {
            int? stockId = GetID(share, endDate);
            var data = ctx.GetData(stockId, 123, startDate, endDate, -23, 14, 3);
            var selectedPoints = data.Where(a => a.Date.HasValue && a.Value.HasValue).ToDictionary(a => a.Date.Value, a => a.Value.Value);
            return new Points(selectedPoints);
        }
    }

我必须为n个股票(500股,500个电话)打电话。我发现它现在对我来说是一个性能瓶颈。存储过程中有很多逻辑,我无法移出proc。有没有人有任何提示加快这一点?或者我只是被惹恼了,因为我需要多次调用这个程序?

1 个答案:

答案 0 :(得分:1)

如果存储过程只需要一个StockId并且您需要多次结果,那么您别无选择,只能将其调用500次,这总是会很慢。

你真的需要考虑修改SP,我建议根据使用的数据库引擎查看表值参数。