EF使用skip并采用存储过程

时间:2017-05-09 22:52:46

标签: c# sql entity-framework stored-procedures

调用存储过程时,<Style x:Key="alternatingListViewItemStyle" TargetType="{x:Type ListViewItem}"> <Style.Triggers> <!-- setting up triggers for alternate background colors --> <Trigger Property="ItemsControl.AlternationIndex" Value="1"> <Setter Property="Background" Value="#FF4C85FF"></Setter> </Trigger> <Trigger Property="ItemsControl.AlternationIndex" Value="2"> <Setter Property="Background" Value="#FFFF8C7C"></Setter> </Trigger> </Style.Triggers> </Style> Skip()如何在Entity Framework中工作?我无法访问sql profiler进行检查,但我想确保优化服务器之间发送的数据量。

假设我有以下代码,其中Take()返回1000多行。

MyStoredProcedure

List<MyComplex_Result> myComplexList = db.MyStoredProcedure() .Skip(50) .Take(10); 是否会确保这些行中只有10行从数据库服务器发送到Web服务器,或者是否会发送所有1000多行(尽管只有10行会发送到客户端)?< / p>

1 个答案:

答案 0 :(得分:2)

之前我确实遇到过这样的要求。最初,我的选择是使用存储过程,但是当我意识到数据可能是数千时,使用SP不再适用。以下是我要做的两件事:

  1. 我创建了一个视图,其中包含SP的结果。当然,这包含所有没有过滤器的记录。我使用该视图通过EF操纵记录,其中Take和Skip适用。
  2. 我坚守SP。我所做的是设计SP以允许接收Take和Skip Count。我使用sp_executesql创建了SP作为字符串。