Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ASP.NET MVC 4 EF5 com MySQL


Você precisa configurar sua configuração com uma string de conexão, DbProviderFactory e um DatabaseInitializer personalizado para MySql Connector 6.5.4. Eu detalhei o etapa completa para fazer o EF5 e o MySql funcionarem, incluindo código para os inicializadores no meu blog . Se você precisar de uma solução de provedor de associação ASP.Net, foi solicitado antes:Provedores de associação/função ASP.NET para MySQL? Vou postar a solução aqui também para uma solução completa do EF5 MySql.

Atualmente, o conector MySql não oferece suporte à migração do EF 5 e o ASP.NET oferece suporte apenas a SimpleMembership (padrão MVC4) no MS SQL e não no MySql. A solução abaixo é para Code First.

Os passos são:
  1. Pegue o EF 5 do NuGet
  2. Pegue MySql.Data e MySql.Data.Entity do NuGet (6.5.4) ou MySql (6.6.4)
  3. Configurar um provedor de dados MySQL
  4. Configurar uma string de conexão MySQL
  5. Criar um inicializador de banco de dados MySQL personalizado
  6. Configurar o inicializador de banco de dados MySQL personalizado
  7. Configure a associação ASP.NET, se necessário

Provedor de Db

<system.data>
 <DbProviderFactories>
  <remove invariant="MySql.Data.MySqlClient"/>
  <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
    description=".Net Framework Data Provider for MySQL" 
    type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
 </DbProviderFactories>
</system.data>

Cadeia de conexão

<connectionStrings>
  <add name="ConnectionStringName" 
    connectionString="Datasource=hostname;Database=schema_name;uid=username;pwd=Pa$$w0rd;" 
    providerName="MySql.Data.MySqlClient" />
</connectionStrings>

Inicializador de banco de dados


Se você estiver usando o conector MySql do NuGet (6.5.4), será necessário um inicializador personalizado. Código disponível em http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html ou em http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

Em seguida, adicione isso à configuração
<configSections>
  <section name="entityFramework" 
    type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, 
    EntityFramework, Version=5.0.0.0, Culture=neutral, 
    PublicKeyToken=b77a5c561934e089" />
</configSections>
<entityFramework>
  <contexts>
      <context type="Namespace.YourContextName, AssemblyName">
         <databaseInitializer 
           type="Namespace.YourChosenInitializer, AssemblyName">
         </databaseInitializer>
      </context>
    </contexts>
    <defaultConnectionFactory 
      type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
</entityFramework>

Associação ASP.NET

<membership defaultProvider="MySqlMembershipProvider">
  <providers>
    <clear />
    <add name="MySqlMembershipProvider"
         type="MySql.Web.Security.MySQLMembershipProvider,
         MySql.Web, Version=6.5.4.0, PublicKeyToken=c5687fc88969c44d"
     autogenerateschema="true"
     connectionStringName="*NAME_OF_YOUR_CONN_STRING*"
     enablePasswordRetrieval="false"
     enablePasswordReset="true"
     requiresQuestionAndAnswer="false"
     requiresUniqueEmail="false"
     passwordFormat="Hashed"
     maxInvalidPasswordAttempts="5"
     minRequiredPasswordLength="6"
     minRequiredNonalphanumericCharacters="0"
     passwordAttemptWindow="10"
     passwordStrengthRegularExpression=""
     applicationName="/" />
  </providers>
</membership>

Faça o AccountController e o Views funcionarem:
  1. Exclua o MVC 4 AccountController, AccountModels, pasta de visualização de conta e _LoginPartial shared view
  2. Criar um novo aplicativo da web MVC 3
  3. Copie o AccountController do MVC 3, AccountModels, a pasta de visualização da conta e a visualização compartilhada _LogOnPartial em seu aplicativo MVC 4
  4. Substituir @Html.Partial(“_LoginPartial”) na visualização _Layout compartilhada com @Html.Partial(“_LogOnPartial”)