Mysql
 sql >> Base de données >  >> RDS >> Mysql

Valeur de retour MySQL Dapper

LAST_INSERT_ID se comportera comme vous l'avez décrit, mais vous avez une erreur sans rapport dans l'instruction d'insertion précédente en raison de l'absence de point-virgule à la fin. Lors du diagnostic d'erreurs de syntaxe dans MySQL, la chaîne SQL contenue dans le message d'erreur se trouve généralement immédiatement après l'erreur de syntaxe.

Envisagez de réorganiser vos instructions pour plus de lisibilité, afin de pouvoir identifier plus facilement les erreurs de syntaxe comme celle-ci. Par exemple :

public void Insert(TUser member)
{
    string sql = @"
        Insert into users
          (UserName, PasswordHash, SecurityStamp, Email, EmailConfirmed, PhoneNumber, PhoneNumberConfirmed, AccessFailedCount, LockoutEnabled, LockoutEndDateUtc, TwoFactorEnabled)
        values 
          (@name, @pwdHash, @SecStamp, @email, @emailconfirmed, @phonenumber, @phonenumberconfirmed, @accesscount, @lockoutenabled, @lockoutenddate, @twofactorenabled);

        select LAST_INSERT_ID();
    ";

    member.Id = db.Connection.ExecuteScalar<int>(sql, new
    {
      name = member.UserName,
      pwdHash = member.PasswordHash,
      SecStamp = member.SecurityStamp,
      email = member.Email,
      emailconfirmed = member.EmailConfirmed,
      phonenumber = member.PhoneNumber,
      phonenumberconfirmed = member.PhoneNumberConfirmed,
      accesscount = member.AccessFailedCount,
      lockoutenabled = member.LockoutEnabled,
      lockoutenddate = member.LockoutEndDateUtc,
      twofactorenabled = member.TwoFactorEnabled
    });
}

Par cette réponse , vous pouvez également supprimer la diffusion sur LAST_INSERT_ID si vous utilisez une version récente de MySQL.