SQL Server にロードされた時系列があります。クエリを実行してから、複数のタスクが SProc から結果を順番に読み取れるようにする必要があります。
Googleで見つけたものから、SProcまたはLINQクエリ/ステートメントを実行できるようです。私は現在LINQに慣れていません(SProcが好ましいアプローチです)。どちらか一方に利点はありますか?
SProc を実行した後、データに順次アクセスするにはどうすればよいですか? 私は、SProc が私の ObjectContext を変更するだけだと仮定しています。この場合、各タスクがどの行にあったかをカウントし、このカウンターで ObjectContext の各パラメーターにアクセスして必要な値を取得する必要がありますか?
SProc コードは次のとおりです。
CREATE PROCEDURE [dbo].[DataRetrieval]
@StartTime Time(0) ='00:00:00',
@EndTime Time(0) ='00:00:00',
@StartDate Date ='2012-01-01',
@EndDate Date ='2012-01-01',
@Location nchar(6) ='Scotland'
AS
/*
Author: Hans
Date: 09-01-2013
Purpose: Used to load a large section of data into memory.
*/
SET NOCOUNT ON;
BEGIN
SELECT *
FROM
dbo.Data
WHERE
LOCATION = @Location
AND ( Date = @StartDate AND Time >= @StartTime
OR Date > @StartDate )
AND ( Date = @EndDate AND Time < @EndTime
OR Date < @EndDate )
ORDER BY
DATE, TIME
END
USRの編集...
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "dbo.Data_GetStoredProcedureList";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandTimeout = 10;
cmd.Connection = connection;
try
{
connection.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader != null && reader.HasRows)
{
cancelTask.ThrowIfCancellationRequested();
while (reader.Read())
{
Entity rowData = new Entity();
rowData.RoutineName = reader["Routine_Name"].ToString();
rowData.ParameterName = reader["Parameter_Name"].ToString();
rowData.DataType = reader["Data_Type"].ToString();
sProcListRetrieval.Results.Add(rowData);
}
}
}
}