加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC 4 EF5与MySQL

发布时间:2020-12-16 00:27:50 所属栏目:asp.Net 来源:网络整理
导读:所以我刚刚拿起了VS2012,我想要启动一个带有EF5的ASP.NET MVC 4应用程序。 我的主机没有MSSQL,所以我必须使用MySQL。 如何告诉我的应用程序应该使用MySQL? (我想要使用devart MySQL连接器或mysql.com) 解决方法 您需要使用连接字符串DbProviderFactory和M
所以我刚刚拿起了VS2012,我想要启动一个带有EF5的ASP.NET MVC 4应用程序。

我的主机没有MSSQL,所以我必须使用MySQL。

如何告诉我的应用程序应该使用MySQL? (我想要使用devart MySQL连接器或mysql.com)

解决方法

您需要使用连接字符串DbProviderFactory和MySql Connector 6.5.4的自定义DatabaseInitializer设置您的配置。我详细说明了 full step for getting EF5 and MySql to play,including code for the initializers on my blog.如果您需要ASP.Net会员提供程序解决方案,那么我将在 ASP.NET Membership/Role providers for MySQL?发布解决方案,同时提供完整的EF5 MySql解决方案。

MySql连接器当前不支持EF 5迁移,ASP.NET仅支持MS SQL不是MySql的SimpleMembership(MVC4默认值)。以下解决方案适用于Code First。

步骤是:

从NuGet抓住EF 5
>从NuGet(6.5.4)或MySql(6.6.4)中抓取MySql.Data和MySql.Data.Entity
>配置MySql数据提供程序
>配置MySql连接字符串
>创建自定义MySql数据库初始化程序
>配置自定义MySql数据库初始化程序
>如果需要,请配置ASP.NET成员资格

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>

连接字符串

<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工作:

>删除MVC 4 AccountController,AccountModels,帐户视图文件夹和_LoginPartial共享视图>创建一个新的MVC 3 Web应用程序>将MVC 3 AccountController,AccountModels,帐户视图文件夹和_LogOnPartial共享视图复制到您的MVC 4应用程序中>在@ Html.Partial(“_ LogOnPartial”)的共享_Layout视图中替换@ Html.Partial(“_ LoginPartial”)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读