gpt4 book ai didi

mysql - 带有 MySQL 的 ASP.NET MVC 4 EF5

转载 作者:IT老高 更新时间:2023-10-29 00:00:05 31 4
gpt4 key购买 nike

所以我刚刚拿起了 VS2012,我想用 EF5 启动一个 ASP.NET MVC 4 应用程序。

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

如何告诉我的应用它应该使用 MySQL? (我要么想使用 devart MySQL 连接器,要么使用来自 mysql.com 的连接器)

最佳答案

您需要为 MySql Connector 6.5.4 使用连接字符串、DbProviderFactory 和自定义 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 上的 SimpleMembership(默认为 MVC4),而不是 MySql。以下解决方案适用于 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 View 文件夹和 _LoginPartial 共享 View
  2. 创建一个新的 MVC 3 网络应用程序
  3. 将 MVC 3 AccountController、AccountModels、Account View 文件夹和 _LogOnPartial 共享 View 复制到您的 MVC 4 应用程序中
  4. 将共享 _Layout View 中的 @Html.Partial(“_LoginPartial”) 替换为 @Html.Partial(“_LogOnPartial”)

关于mysql - 带有 MySQL 的 ASP.NET MVC 4 EF5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12181428/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com