Como configurar uma aplicação usando ASP.NET Identity com MySQL Provider


Introdução

Eu usei o Visual Studio 2013 para desenvolver o código de exemplo. O framework da aplicação usado é o .NET 4.5.
O banco de dados utilizado é o MySQL. Baixei e instalei o MySQL Installer 5.6.19 que pode ser encontrado aqui.
Isso instala todos os arquivos necessários, incluindo o conector MySQL versão 1.1.4. Você pode até mesmo selecionar MySql no Server Explorer -> Data Connections -> Clique com o botão direito em Add Connection:
vsmysql1
Figura 1
Depois de ter baixado o projeto de exemplo (VS2013MySql), descompacte-o, abra a pasta e clique em VS2013MySql.sln para abri-lo no Visual Studio 2013. Você terá que fazer alterações na connection string em Web.config para executá-lo em seu Próprio ambiente MySql.

Para desenvolvedores familiarizados com o Visual Studio (2012 e 2013), é bastante fácil trabalhar usando o LocalDB já configurado para desenvolvimento. Um desenvolvedor pode então facilmente alternar para o MS SQL Server de produção.

Este artigo é para usuários que desejam desenvolver sua aplicação web ASP.NET usando o MySQL.

Motivo

Às vezes, um desenvolvedor pode querer usar um banco de dados de código aberto gratuito para reduzir custos envolvidos no uso de outros bancos de dados como, por exemplo, MS SQL Server, Oracle DB etc. Ou talvez um desenvolvedor possa ter um cliente que necessite especificamente do trabalho feito usando mySql. Qualquer que seja o motivo, o seguinte irá ajudá-lo a configurar.

Usando o Código

Crie um novo projeto no VS 2013. Selecione ASP.NET Web Application. No topo, selecione .NET framework 4.5.1, defina um nome para seu aplicativo e clique em próximo.

Na próxima tela, selecione o template Web Forms (este artigo é baseado em um aplicação WebForms. No entanto, as etapas para configurar o MySQL para uma aplicação MVC são semelhantes) e deixar autenticação como Individual User Accounts (Contas Individuais de Usuário). Clique em "OK" para inicializar a aplicação para desenvolvimento.

No seu Solution Explorer, clique com o botão direito em References e clique em Add Reference. O instalador do MySQL que indiquei acima deve ter instalado alguns arquivos .MySql importantes em seu computador. Devemos selecionar 3 deles para adicionar às nossas referências:

No Reference Manager, vá para Assemblies -> Extensions e clique em: MySql.Data, MySql.Data.Entity.EF6 e MySql.Web. (MySql.Data e MySql.Web estão na versão 6.8.3.0)

Suas referências agora devem ser assim:
vsmysql2
Figura 2
O próximo passo é abrir o arquivo Web.config e efetuar as seguintes alterações. (A solução para download deve orientá-lo)
1. Alterar a connection string:
Altere o nome do servidor, Id, senha e bancos de dados conforme necessário. Para obter facilmente a connection string necessária, selecione MySql em Server Explorer -> Data Connections -> Clique com o botão direito em Add Connection:

Insira os detalhes conforme necessário, selecione a base de dados e teste a conexão. Depois, clique em "OK". No Server Explorer, quando você clica na base de dados adicionada, você deve ver a connection string na janela de propriedades na parte inferior direita da tela do Visual Studio.
2. Alterar o membership:
3. Alterar o profile:
4. Alterar o role manager:
5. Alterar a Entity Framework antiga para:
Devemos agora habilitar as migrações.
Vá para o item do menu View -> Other Windows -> Clique em Package Manager Console. Digite "enable-migrations" no prompt do console e pressione enter.
vsmysql3
Figura 3
Uma nova pasta, Migrations será colocada em sua solução (verifique o solution explorer) juntamente com um novo arquivo chamado "Configuration.cs".

O Entity Framework Code First usa o Migration History para acompanhar as mudanças do modelo e garantir a consistência entre o banco de dados e os esquemas conceituais. A tabela Migration History, __migrationhistory, tem uma chave primária que é muito grande para o MySql.
Solução:
Na pasta de migration, adicione uma nova classe chamada MySqlHistoryContext.cs e adicione o seguinte código:
Na mesma pasta migration, faça alterações no arquivo Configuration.cs para ficar assim:
Agora precisamos criar um inicializador de base de dados personalizado, já que o provedor MySQL não suporta as migrações do Entity Framework.
Adicione uma nova classe chamada MySqlInitializer.cs no projeto, e altere seu código para:
O arquivo acima na linha 24 (no meu projeto): Altere "aspmysql" para o nome da base de dados MySql que você está usando.

No meu solution explorer, os 3 arquivos se parecem com isto:
vsmysql4
Figura 4
Na pasta Models no solution explorer, altere o código do arquivo IdentityModel.cs para ficar assim:
Deixe a seção Helpers como está.
Adivinha? Está pronto!
Para testar sua aplicação, pressione Ctrl + F5 para compilar e executar.
Em seguida, clique na guia Register no canto superior direito da página e registre um novo usuário. Deverá aparecer "Welcome @user!" No menu de navegação.

Agora, se você for ao MySql workbench (eu us o SQLyog), você deve ver as tabelas recém-criadas:
vsmysql5
Figura 5
Se você visualizar os dados na tabela "aspnetusers", você verá as informações do usuário recém-criado:
vsmysql6
Figura 6
Eu criei isso juntando partes de códigos disponíveis nos fóruns de desenvolvedores. Este tutorial ajudou muito, mesmo que eles mostrem uma conexão MySql com o Azure. Espero que isso sirva de ajuda para algumas pessoas.

ADAPTAÇÃO: Herbert Silver
FONTE: http://kenyatips.com/set-application-using-asp-net-identity-mysql-provider/
AUTOR: Kinyanjui Kamau

Comentários

Postagens mais visitadas