Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ASP.NET MVC 4 EF5 mit MySQL

Sie müssen Ihre Konfiguration mit einer Verbindungszeichenfolge, DbProviderFactory und einem benutzerdefinierten DatabaseInitializer für MySql Connector 6.5.4 einrichten. Ich habe die vollständiger Schritt, um EF5 und MySql zum Laufen zu bringen, einschließlich Code für die Initialisierer in meinem Blog . Wenn Sie eine ASP.Net-Mitgliedschaftsanbieterlösung benötigen, wurde zuvor gefragt:ASP.NET-Mitgliedschafts-/Rollenanbieter für MySQL? Ich werde die Lösung hier auch für eine vollständige EF5-MySql-Lösung posten.

Der MySql-Connector unterstützt derzeit keine EF 5-Migration und ASP.NET unterstützt nur SimpleMembership (MVC4-Standard) auf MS SQL, nicht auf MySql. Die folgende Lösung ist für Code First.

Die Schritte sind:

  1. Besorgen Sie sich EF 5 von NuGet
  2. Holen Sie MySql.Data und MySql.Data.Entity von NuGet (6.5.4) oder MySql (6.6.4)
  3. Konfigurieren Sie einen MySql-Datenanbieter
  4. Konfigurieren Sie eine MySql-Verbindungszeichenfolge
  5. Erstellen Sie einen benutzerdefinierten MySql-Datenbankinitialisierer
  6. Konfigurieren Sie den benutzerdefinierten MySql-Datenbankinitialisierer
  7. ASP.NET-Mitgliedschaft konfigurieren, falls erforderlich

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>

Verbindungszeichenfolge

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

Datenbank-Initialisierer

Wenn Sie den MySql-Connector von NuGet (6.5.4) verwenden, ist ein benutzerdefinierter Initialisierer erforderlich. Code verfügbar unter http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html oder unter http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

Fügen Sie dies dann zur Konfiguration hinzu

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

ASP.NET-Mitgliedschaft

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

Bringen Sie AccountController und Views zum Laufen:

  1. Löschen Sie MVC 4 AccountController, AccountModels, Kontoansichtsordner und _LoginPartial shared view
  2. Erstellen Sie eine neue MVC 3-Webanwendung
  3. Kopieren Sie MVC 3 AccountController, AccountModels, Kontoansichtsordner und _LogOnPartial Shared View in Ihre MVC 4-Anwendung
  4. Ersetzen Sie @Html.Partial(“_LoginPartial”) in der freigegebenen _Layout-Ansicht mit @Html.Partial(“_LogOnPartial”)