sql >> Databasteknik >  >> RDS >> Mysql

Dapper MySQL returvärde

LAST_INSERT_ID kommer att bete sig som du har beskrivit, men du har ett orelaterat fel i den föregående infogningssatsen på grund av att du inte inkluderar ett semikolon i slutet av det. När man diagnostiserar syntaxfel i MySQL är SQL-strängen i felmeddelandet vanligtvis omedelbart efter syntaxfelet.

Överväg att omorganisera dina uttalanden för läsbarhet, så att du lättare kan identifiera syntaxfel som detta. Till exempel:

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
    });
}

Per det här svaret , du kanske också kan ta bort casten på LAST_INSERT_ID om du kör en ny MySQL-version.




  1. MySQL:Ta bort rader som innehåller en specifik parameter och är äldre än en dag

  2. mysql-fråga om ett datum, mellan två datumfält

  3. docker postgres med initiala data kvarstår inte över commits

  4. Hur man förhindrar anslutningstidsgränser för stora MySQL-importer