SQL Server では、ID は null 以外の整数であり、ID です。
次のコードを実行すると、最後の行で InvalidCastException が発生します。
SqlCommand cmd = new SqlCommand();
cmd.Connection = _conn;
cmd.CommandText = @"INSERT INTO [Users] (Name, Email, Password) VALUES (@name, @email, @pass); SELECT SCOPE_IDENTITY()";
cmd.Parameters.AddWithValue("@name", newUser.Name);
cmd.Parameters.AddWithValue("@email", newUser.Email);
cmd.Parameters.AddWithValue("@pass", newUser.PasswordHash);
int id = (int)cmd.ExecuteScalar();
ここで返される ExecuteScalar() とは何ですか? それが返すものは何でも、それを数値のように見せる ToString() を持っているので、このひどいコード行は機能します:
int id = Int32.Parse(cmd.ExecuteScalar().ToString());