sql >> Databasteknik >  >> RDS >> Mysql

ASP.NET MVC 4 EF5 med MySQL

Du måste ställa in din konfiguration med en anslutningssträng, DbProviderFactory och en anpassad DatabaseInitializer för MySql Connector 6.5.4. Jag har detaljerat hela steget för att få EF5 och MySql att spela, inklusive kod för initialiseringarna på min blogg . Om du behöver ASP.Net-lösning för medlemskapsleverantörer har det blivit frågat tidigare:ASP.NET-medlemskap/rollleverantörer för MySQL? Jag kommer att lägga upp lösningen här också för en komplett EF5 MySql-lösning.

MySql-anslutningen stöder för närvarande inte EF 5-migrering och ASP.NET stöder endast SimpleMembership (MVC4-standard) på MS SQL inte MySql. Lösningen nedan är för Code First.

Stegen är:

  1. Ta EF 5 från NuGet
  2. Hämta MySql.Data och MySql.Data.Entity från NuGet (6.5.4) eller MySql (6.6.4)
  3. Konfigurera en MySql-dataleverantör
  4. Konfigurera en MySql-anslutningssträng
  5. Skapa en anpassad MySql Databas Initializer
  6. Konfigurera Custom MySql Database Initializer
  7. Konfigurera ASP.NET-medlemskap om du behöver det

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>

Anslutningssträng

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

Databasinitiering

Om du använder MySql-anslutningen från NuGet (6.5.4) krävs en anpassad initialiserare. Koden finns på http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html eller på http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

Lägg sedan till detta i konfigurationen

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

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

Få AccountController och Views att fungera:

  1. Ta bort MVC 4 AccountController, AccountModels, Account View-mappen och _LoginPartial delad vy
  2. Skapa en ny MVC 3-webbapplikation
  3. Kopiera MVC 3 AccountController, AccountModels, Account View-mappen och _LogOnPartial delad vy till din MVC 4-applikation
  4. Ersätt @Html.Partial(“_LoginPartial”) i den delade _Layoutvyn med @Html.Partial(“_LogOnPartial”)


  1. Vilka situationer gör att Oracle-paket blir ogiltiga?

  2. Hur man automatiserar migrering från fristående MySQL till Galera Cluster med Ansible

  3. SQL, hur man uppdaterar en tabellstruktur

  4. VÄLJA data från flera tabeller?