Mysql
 sql >> Database >  >> RDS >> Mysql

ASP.NET MVC 4 EF5 con MySQL

È necessario configurare la configurazione con una stringa di connessione, DbProviderFactory e un DatabaseInitializer personalizzato per MySql Connector 6.5.4. Ho dettagliato il passaggio completo per far riprodurre EF5 e MySql, incluso il codice per gli inizializzatori sul mio blog . Se hai bisogno della soluzione del provider di appartenenza ASP.Net, è stata richiesta in precedenza:Fornitori di appartenenza/ruolo ASP.NET per MySQL? Pubblicherò qui la soluzione anche per una soluzione MySql EF5 completa.

Il connettore MySql attualmente non supporta la migrazione EF 5 e ASP.NET supporta solo SimpleMembership (impostazione predefinita MVC4) su MS SQL non MySql. La soluzione seguente è per Code First.

I passaggi sono:

  1. Prendi EF 5 da NuGet
  2. Acquisisci MySql.Data e MySql.Data.Entity da NuGet (6.5.4) o MySql (6.6.4)
  3. Configura un provider di dati MySql
  4. Configura una stringa di connessione MySql
  5. Crea un inizializzatore di database MySql personalizzato
  6. Configura l'inizializzatore del database MySql personalizzato
  7. Configura l'abbonamento ASP.NET se lo desideri

DbProvider

<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>

Stringa di connessione

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

Inizializzatore database

Se si utilizza il connettore MySql da NuGet (6.5.4), è necessario un inizializzatore personalizzato. Codice disponibile su http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html o su http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

Quindi aggiungilo alla configurazione

<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>

Abbonamento 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>

Fai funzionare AccountController e Views:

  1. Elimina MVC 4 AccountController, AccountModels, cartella Visualizzazione account e visualizzazione condivisa _LoginPartial
  2. Crea una nuova applicazione web MVC 3
  3. Copia MVC 3 AccountController, AccountModels, cartella Visualizzazione account e visualizzazione condivisa _LogOnPartial nell'applicazione MVC 4
  4. Sostituisci @Html.Partial(“_LoginPartial”) nella vista _Layout condivisa con @Html.Partial(“_LogOnPartial”)