Microsoft.ApplicationBlocks.Dataのコードを読んでいます(コードはこちら)
しかし、私は奇妙なことに気づきました:
関数の1つ(executeNonQuery)で、Spのパラメーターをキャッシュから読み取ろうとし、存在しない場合はそれらをキャッシュに入れます(asp.netキャッシュではなく、内部HashSet)
public static int ExecuteNonQuery(string connectionString, string spName, params SqlParameter[] parameterValues)
{
if (connectionString == null || connectionString.Length == 0) throw new ArgumentNullException("connectionString");
if (spName == null || spName.Length == 0) throw new ArgumentNullException("spName");
// If we receive parameter values, we need to figure out where they go
if ((parameterValues != null) && (parameterValues.Length > 0))
{
// Pull the parameters for this stored procedure from the parameter cache (or discover them & populate the cache)
//------------------------------------
SqlParameter[] commandParameters = SqlHelperParameterCache.GetSpParameterSet(connectionString, spName);
//------------------------------------
// Assign the provided values to these parameters based on parameter order
AssignParameterValues(commandParameters, parameterValues);
// Call the overload that takes an array of SqlParameters
return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName, commandParameters);
}
else
{
// Otherwise we can just call the SP without params
return ExecuteNonQuery(connectionString, CommandType.StoredProcedure, spName);
}
}
孤立した線を見てください。
なぜ彼らはそれをしたのですか?Cache にパラメーターがある場合、どのように役立ちますか? とにかく、私のdalからパラメータを送信するつもりです...(そして、パラメータをSPに送信する必要があります)...
何が欠けていますか?