LAST_INSERT_ID
se comportará como lo ha descrito, pero tiene un error no relacionado en la declaración de inserción anterior debido a que no incluye un punto y coma al final. Al diagnosticar errores de sintaxis en MySQL, la cadena SQL contenida en el mensaje de error suele estar inmediatamente después del error de sintaxis.
Considere reorganizar sus declaraciones para facilitar la lectura, de modo que pueda identificar errores de sintaxis como este más fácilmente. Por ejemplo:
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
});
}
Según esta respuesta
, es posible que también pueda eliminar el molde en LAST_INSERT_ID
si está ejecutando una versión reciente de MySQL.