sql >> Database >  >> RDS >> Mysql

ASP.NET MVC 4 EF5 met MySQL

U moet uw configuratie instellen met een verbindingsreeks, DbProviderFactory en een aangepaste DatabaseInitializer voor MySql Connector 6.5.4. Ik heb de volledige stap om EF5 en MySql te laten spelen, inclusief code voor de initializers op mijn blog . Als je een ASP.Net-lidmaatschapsprovideroplossing nodig hebt, is dit eerder gevraagd:ASP.NET-lidmaatschap/rolproviders voor MySQL? Ik zal de oplossing hier ook posten voor een complete EF5 MySql-oplossing.

De MySql-connector ondersteunt momenteel geen EF 5-migratie en ASP.NET ondersteunt alleen SimpleMembership (MVC4-standaard) op MS SQL en niet op MySql. De onderstaande oplossing is voor Code First.

De stappen zijn:

  1. Pak EF 5 van NuGet
  2. Pak MySql.Data en MySql.Data.Entity van NuGet (6.5.4) of MySql (6.6.4)
  3. Een MySql-gegevensprovider configureren
  4. Een MySql-verbindingsreeks configureren
  5. Maak een aangepaste MySql-database-initiator
  6. Configureer de Custom MySql Database Initializer
  7. Configureer ASP.NET-lidmaatschap indien nodig

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>

Verbindingsreeks

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

Database-initialisator

Als u de MySql-connector van NuGet (6.5.4) gebruikt, is een aangepaste initialisatie vereist. Code beschikbaar op http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html of op http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

Voeg dit dan toe aan de configuratie

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

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

Zorg dat de AccountController en Views werken:

  1. Verwijder de MVC 4 AccountController, AccountModels, Accountweergavemap en _LoginPartial gedeelde weergave
  2. Maak een nieuwe MVC 3-webtoepassing
  3. Kopieer de MVC 3 AccountController, AccountModels, Accountweergavemap en _LogOnPartial gedeelde weergave naar uw MVC 4-toepassing
  4. Vervang @Html.Partial(“_LoginPartial”) in de gedeelde _Layout-weergave met @Html.Partial(“_LogOnPartial”)


  1. Hoe debug je een query in extbase?

  2. Is er een nestlimiet voor gecorreleerde subquery's in sommige versies van Oracle?

  3. Hoe de JSONPath-wildcardstap (**) werkt in MariaDB

  4. JSON_TABLE() Functie in Oracle