当前位置: 首页 > 面试题库 >

带有MySQL的ASP.NET MVC 4 EF5

东门令
2023-03-14
问题内容

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

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

如何告诉我的应用程序应使用MySQL?(我想使用devart MySQL连接器,也可以使用mysql.com的连接器)


问题答案:

您需要使用连接字符串DbProviderFactory和用于MySql Connector
6.5.4的自定义DatabaseInitializer来设置配置。我已经详细介绍了让EF5和MySql发挥作用的完整步骤,包括我的Blog上用于初始化程序的代码。如果您需要ASP.Net成员资格提供程序解决方案,请先询问以下内容:MySQL的ASP.NET成员资格/角色提供程序?我还将在此处发布解决方案,以获取完整的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成员资格

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个步骤获取实体框架5与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和View运行:

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


 类似资料:
  • 问题内容: 我在000webhost上创建了一个mySQL数据库,我想将其连接到我的Java程序中,但是某种程度上驱动程序没有接收套接字。这是我的代码: 其中a4931569_users是数据库,Users是表。请帮我。 问题答案: 000webhost中的MySQL不允许您从外部应用程序进行连接,而只能从其域中托管的页面内进行连接。 请检查:如何从计算机连接到MySQL?

  • 问题内容: 我想做的是对一列求和,但也要对它求和的行数进行计数,最大不超过5行。所以我的查询是: 我期望返回的是最多5个的COUNT(*)(我不能认为在我的代码逻辑中它将始终为5,因为它可能少于5个答案),总和 最多为 5行。 相反,我似乎得到的是匹配行的总数(用户为1)作为计数,以及这些行的得分总和。这些数字不会改变我是否把或者甚至是。 我相信在这种情况下会起作用的是 但这对于这样一个简单的查询

  • 问题内容: 我的代码中的子类别有些麻烦。 我的期望: 面包店 罐头食品 乳制品 肉 子类别 子类别 … 子类别 糖果和零食 子类别 子类别 … 子类别 MYSQL表架构: 分类: id类别名称url类型 结果:http : //www.picupload.us/images/454result.png 谢谢您的时间,福克斯·桑克(Fox Sank) 编辑: 这是桌子 问题答案: 我尝试这段代码,它

  • 问题内容: 我有一个使用枚举的数据库表。这已经可以与hibernate(使用XML)一起使用了,我正尝试将其转换为注释,因为这是仍在使用xml表示法的最后一部分。 列定义: 以下作品: 这不起作用: 注释样式在启动时导致以下异常:org.hibernate.HibernateException:UserDTO中列状态的列类型错误。找到:枚举,预期:varchar(255) 我有什么办法强迫它像使用

  • 问题内容: 我一直在这里,这里和这里阅读有关使用优势的信息 如果我理解正确,那么JDBC将把尽可能多的查询打包到单个网络包中,从而降低了网络开销。我对吗? 然后引起我注意的是,在MySQL服务器中为定义的值可能会导致查询问题(查询未在服务器上执行)。 所以我的第二个问题是,JDBC是否知道分配给它的值,并因此使数据包小于为其定义的值,或者这是开发人员必须考虑的事情? 如果我理解不对,请也通知我。

  • 问题内容: 我已经安装了 Python 3.4.0 版, 并且希望使用MySQL数据库进行项目。我下载并尝试安装 MySQLdb ,但对于此版本的Python而言并不成功。有什么建议可以解决此问题并正确安装吗? 问题答案: MySQLdb不支持Python 3,但它不是唯一的Python MySQL驱动程序。 mysqlclient本质上是MySQLdb的一个分支,其中合并了Python 3支持(