Я пытаюсь добавить данные в таблицу пользователей (после регистрации). Сразу после добавления пользовательских данных в пользовательскую таблицу я не хочу создавать строку с userID в таблице 'profile' (1: 1), поэтому я использую транзакции здесь. Но проблема в том, что я не могу получить UserId пользователя после вставки (@@ Identity), когда код поступает в исключение строки «ExecuteScalar ()», которое я получаю: "Object reference not set to an instance of an object."
string sqlAddUser = string.Format("insert into tbl_users ([UserName],[Email],[Password],[PasswordSalt],[CreatedDate],[IsActivated],[IsLockedOut],[LastLoginDate],[LastLockedOutDate], [NewEmailKey]) values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}', '{9}')",
user.UserName, user.Email, user.Password, user.PasswordSalt, user.CreatedDate, user.IsActivated, user.IsLockedOut, user.LastLockedOutDate, user.LastLoginDate, user.NewEmailKey);
SqlCommand cmdAddUser = new SqlCommand(sqlAddUser, conn, transaction);
int result = cmdAddUser.ExecuteNonQuery();
SqlCommand cmdGetLastIdentity = new SqlCommand("SELECT @@IDENTITY", conn, transaction);
int i = (int)cmdGetLastIdentity.ExecuteScalar();
string sqlAddUserProfile = string.Format("insert into tbl_profile (UserId) values ({0})", i);
SqlCommand cmdAddUserProfile = new SqlCommand(sqlAddUserProfile, conn, transaction);
cmdAddUserProfile.ExecuteNonQuery();
transaction.Commit();
return GetUser(username);
}
catch (Exception ex)
{
transaction.Rollback();
}