このサイトを読んで、次のコードはデータベースに追加したアイテムのIDを返すと思いましたが、入力しようとしているint値がスコープに表示されません。これが私の挿入ステートメントのコードです:
foreach (ExOb exc in exobject)
{
Type type = exc.GetType();
//Add a weight exercise
if (type == typeof(Weights))
{
Weights thisweight = (Weights)exc;
string InsertWeight = ("INSERT INTO WeightExercise (ExcerciseName, Duration, Sets, DiaryId) VALUES (@name, @time, @sets, @DiaryId) SET @ID = SCOPE_IDENTITY();");
com = new SqlCommand(InsertWeight, con);
com.Parameters.AddWithValue("@name", thisweight.ExcerciseName);
com.Parameters.AddWithValue("@time", thisweight.WeightDuration);
com.Parameters.AddWithValue("@sets", thisweight.TotalSets);
com.Parameters.AddWithValue("@DiaryId", results[0]);
com.Parameters.Add("@ID", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
con.Open();
com.ExecuteNonQuery();
int ID = (int)com.Parameters["@ID"].Value;
con.Close();
}
else if (type == typeof(Cardio))
{
Cardio thiscardio = (Cardio)exc;
}
}
}
データベースは、ウェイトエクササイズの詳細で更新されます。デバッグ時に確認しましたが、コマンドパラメータ@IDは最新のエントリのIDを保持しています。Int IDは、デバッグ時にローカルに表示されません。それを見ると、次のようになります。
ID The name 'ID' does not exist in the current context
私はここで何が間違っているのですか?