16

VS2012 を手に入れたので、EF5 で ASP.NET MVC 4 アプリを開始したいと考えています。

私のホストには MSSQL がないため、MySQL を使用する必要があります。

MySQL を使用する必要があることをアプリに伝えるにはどうすればよいですか? (devart MySQL コネクタまたは mysql.com のいずれかを使用したい)

4

3 に答える 3

26

接続文字列、DbProviderFactory、および MySql Connector 6.5.4 用のカスタム DatabaseInitializer を使用して構成をセットアップする必要があります。初期化子のコードを含む、EF5 と MySql を再生するための完全な手順については、ブログ で詳しく説明しています。ASP.Net メンバーシップ プロバイダー ソリューションが必要な場合は、前に尋ねられました: MySQL の ASP.NET メンバーシップ/ロール プロバイダー? 完全な EF5 MySql ソリューションについても、ここにソリューションを投稿します。

MySql コネクタは現在 EF 5 の移行をサポートしておらず、ASP.NET は MySql ではなく MS SQL の SimpleMembership (MVC4 デフォルト) のみをサポートしています。以下のソリューションは、Code First 用です。

手順は次のとおりです。

  1. NuGet から EF 5 を取得する
  2. NuGet (6.5.4) または MySql (6.6.4) から MySql.Data および MySql.Data.Entity を取得します。
  3. MySql データ プロバイダーの構成
  4. MySQL 接続文字列を構成する
  5. カスタム MySQL データベース初期化子を作成する
  6. カスタム MySQL データベース初期化子を構成する
  7. 必要に応じて ASP.NET メンバーシップを構成する

データベースプロバイダー

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

接続文字列

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

データベース初期化子

NuGet (6.5.4) の MySql コネクタを使用している場合は、カスタム初期化子が必要です。コードはhttp://brice-lambson.blogspot.se/2012/05/using-entity-framework-code-first-with.html またはhttp://www.nsilverbullet.net/2012/11/07/で入手可能6-steps-to-get-entity-framework-5-working-with-mysql-5-5/

次に、これを構成に追加します

<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 メンバーシップ

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

AccountController と Views を機能させます。

  1. MVC 4 AccountController、AccountModels、Account ビュー フォルダー、および _LoginPartial 共有ビューを削除します。
  2. 新しい MVC 3 Web アプリケーションを作成する
  3. MVC 3 AccountController、AccountModels、Account ビュー フォルダー、および _LogOnPartial 共有ビューを MVC 4 アプリケーションにコピーします。
  4. @Html.Partial(“_LoginPartial”)共有 _Layout ビューを次のように置き換えます@Html.Partial(“_LogOnPartial”)
于 2012-11-07T15:14:48.603 に答える