Pergunta

Estou tentando fazer com que meu aplicativo MVC3 use o banco de dados MySql em vez do Sql Server 2008.Eu criei o banco de dados e os objetos associados no Mysql.E atualizei a string de conexão em meu arquivo web.config para fazer referência a MySql.Data.MySqlClient.

Quando executo meu aplicativo e tento fazer login, recebo o erro

Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

Tenho um MembershipProvider personalizado e dentro do processo de validação tenho o seguinte

 using (MyContext context= new MyContext())
 {
      --some checks here
      ---
        if (verificationSucceeded)
        {
            user.passwordFailuresSinceLastSuccess = 0;
        }
        else
        {
            int failures = user.passwordFailuresSinceLastSuccess;
            if (failures != -1)
            {
                user.passwordFailuresSinceLastSuccess += 1;
                user.lastPasswordFailureDate = DateTime.UtcNow;
            }
        }
        context.SaveChanges();  ----THIS IS WHERE IT FALLS OVER
         -- some other code here 
    }

O código acima funciona perfeitamente com o Sql Server 2008, mas está falhando apenas com o MySql.Alguma ideia de como posso resolver isso, por favor?

A propósito, não tenho nenhum gatilho definido na tabela subjacente.A aplicação é MVC3 com EF Code First.Obrigado,

Foi útil?

Solução

Se mais alguém está tendo esse problema, o problema estava com o Guid, como eu pensava.Para superar isso, adicione o seguinte à sua string de conexão

Guias antigos = verdadeiro

Por exemplo, minha string de conexão está assim agora.

<add name="MyDB" connectionString="Server=localhost; Database=mydatabase; Uid=user; Pwd=mypass; Old Guids=true;" providerName="MySql.Data.MySqlClient" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top