Mysql
 sql >> Base de données >  >> RDS >> Mysql

ASP.NET MVC 4 EF5 avec MySQL

Vous devez configurer votre configuration avec une chaîne de connexion, DbProviderFactory et un DatabaseInitializer personnalisé pour MySql Connector 6.5.4. J'ai détaillé le étape complète pour faire jouer EF5 et MySql, y compris le code pour les initialiseurs sur mon blog . Si vous avez besoin d'une solution de fournisseur d'adhésion ASP.Net, cela a déjà été demandé :Fournisseurs d'adhésion/de rôle ASP.NET pour MySQL ? Je publierai également la solution ici pour une solution EF5 MySql complète.

Le connecteur MySql ne prend actuellement pas en charge la migration EF 5 et ASP.NET ne prend en charge que SimpleMembership (MVC4 par défaut) sur MS SQL et non sur MySql. La solution ci-dessous est pour Code First.

Les étapes sont :

  1. Récupérer EF 5 depuis NuGet
  2. Récupérer MySql.Data et MySql.Data.Entity depuis NuGet (6.5.4) ou MySql (6.6.4)
  3. Configurer un fournisseur de données MySql
  4. Configurer une chaîne de connexion MySql
  5. Créer un initialiseur de base de données MySql personnalisé
  6. Configurer l'initialiseur de base de données MySql personnalisé
  7. Configurez l'adhésion à ASP.NET si vous en avez besoin

Fournisseur de base de données

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

Chaîne de connexion

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

Initialiseur de base de données

Si vous utilisez le connecteur MySql de NuGet (6.5.4), un initialiseur personnalisé est requis. Code disponible sur http:// brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html ou sur http://www.nsilverbullet.net/2012/11/07/6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

Ajoutez ensuite ceci à la configuration

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

Adhésion 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>

Faites fonctionner AccountController et Views :

  1. Supprimez le dossier MVC 4 AccountController, AccountModels, Account view et _LoginPartial shared view
  2. Créer une nouvelle application Web MVC 3
  3. Copiez le dossier AccountController, AccountModels, Account View et _LogOnPartial de MVC 3 dans votre application MVC 4
  4. Remplacer @Html.Partial(“_LoginPartial”) dans la vue _Layout partagée avec @Html.Partial(“_LogOnPartial”)