SCOPE_IDENTITYは、同じスコープのID列に挿入された最後のID値を返します。スコープはモジュールです:ストアドプロシージャ、トリガー、関数、またはバッチ。したがって、2つのステートメントが同じストアドプロシージャ、関数、またはバッチにある場合、それらは同じスコープにあります。
SqlCommand.ExecuteScalarを使用して、挿入コマンドを実行し、1つのクエリで新しいIDを取得できます。
using (var con = new SqlConnection(ConnectionString)) {
int newID;
var cmd = "INSERT INTO foo (column_name)VALUES (@Value);SELECT CAST(scope_identity() AS int)";
using (var insertCommand = new SqlCommand(cmd, con)) {
insertCommand.Parameters.AddWithValue("@Value", "bar");
con.Open();
newID = (int)insertCommand.ExecuteScalar();
}
}