LAST_INSERT_ID
ще се държи както сте описали, но имате несвързана грешка в предишния оператор за вмъкване поради липса на точка и запетая в края му. Когато се диагностицират синтактични грешки в MySQL, SQL низът, съдържащ се в съобщението за грешка, обикновено е непосредствено след синтактичната грешка.
Помислете за реорганизиране на вашите изявления за четливост, така че да можете по-лесно да идентифицирате синтактични грешки като тази. Например:
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
});
}
За този отговор
, може също да успеете да премахнете прехвърлянето на LAST_INSERT_ID
ако използвате последна версия на MySQL.