LAST_INSERT_ID
akan berperilaku seperti yang telah Anda jelaskan, tetapi Anda memiliki kesalahan yang tidak terkait dalam pernyataan penyisipan sebelumnya karena tidak menyertakan titik koma di bagian akhir. Saat mendiagnosis kesalahan sintaks di MySQL, string SQL yang terdapat dalam pesan kesalahan biasanya segera setelah kesalahan sintaksis.
Pertimbangkan untuk mengatur ulang pernyataan Anda agar mudah dibaca, sehingga Anda dapat mengidentifikasi kesalahan sintaks seperti ini dengan lebih mudah. Misalnya:
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 jawaban ini
, Anda mungkin juga dapat menghapus pemeran di LAST_INSERT_ID
jika Anda menjalankan versi MySQL terbaru.