Errore durante l'inserimento tramite SqlMapperExtension Dapper

c# dapper dapper-extensions insert

Domanda

Attualmente sto giocando con Dapper sto cercando di inserire valori nel db come segue

using (var sqlCon = new SqlConnection(Context.ReturnDatabaseConnection()))
{
    sqlCon.Open();

    try
    {
        var emailExists = sqlCon.Query<UserProfile>(@"SELECT UserId FROM User_Profile WHERE EmailAddress = @EmailAddress",
                          new { EmailAddress = userRegister.EmailAddress.Trim() }).FirstOrDefault();

        if (emailExists == null) // No profile exists with the email passed in, so insert the new user.
        {
            userProfile.UniqueId = Guid.NewGuid();
            userProfile.Firstname = userRegister.Firstname;
            userProfile.Surname = userRegister.Surname;
            userProfile.EmailAddress = userRegister.EmailAddress;
            userProfile.Username = CreateUsername(userRegister.Firstname);
            userProfile.Password = EncryptPassword(userRegister.Password);
            userProfile.AcceptedTerms = true;
            userProfile.AcceptedTermsDate = System.DateTime.Now;
            userProfile.AccountActive = true;
            userProfile.CurrentlyOnline = true;
            userProfile.ClosedAccountDate = null;
            userProfile.JoinedDate = System.DateTime.Now;

            userProfile.UserId = SqlMapperExtensions.Insert(sqlCon, userProfile); // Error on this line

            Registration.SendWelcomeEmail(userRegister.EmailAddress, userRegister.Firstname); // Send welcome email to new user.
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
    finally
    {
        sqlCon.Close();
    }
}

L'errore che ottengo è

ExecuteNonQuery requires the command to have a transaction when the connection 
assigned to the command is in a pending local transaction.  The Transaction 
property of the command has not been initialized. 

Ho cercato su Google questo errore, ma ho frainteso le risposte fornite.

Risposta popolare

Dal messaggio di errore presumo di aver avviato una transazione che non è stata né confermata né annullata. La vera causa di questo messaggio di errore è altrove.

Ti suggerisco di registrare le richieste in Context.ReturnDatabaseConnection() e tracciare quali richieste precedono questo errore.

Inoltre ti consiglio di cercare nel tuo codice tutte le transazioni e controllare se sono state completate correttamente (commit / rollback).



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché