LAST_INSERT_ID
sẽ hoạt động như bạn đã mô tả, nhưng bạn gặp lỗi không liên quan trong câu lệnh chèn trước đó do không bao gồm dấu chấm phẩy ở cuối câu lệnh. Khi chẩn đoán lỗi cú pháp trong MySQL, chuỗi SQL có trong thông báo lỗi thường xuất hiện ngay sau lỗi cú pháp.
Xem xét tổ chức lại các câu lệnh của bạn để dễ đọc, để bạn có thể xác định các lỗi cú pháp như thế này dễ dàng hơn. Ví dụ:
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 câu trả lời này
, bạn cũng có thể xóa truyền trên LAST_INSERT_ID
nếu bạn đang chạy phiên bản MySQL gần đây.