mysql - 连接字符串错误。无法找到请求的 .Net Framework 数据提供程序

标签 mysql asp.net-mvc entity-framework database-connection

在我的第一个 MVC 4 应用程序中,我在代码中遇到了以下错误。

WebSecurity.InitializeDatabaseConnection("fousuEntities", "usertable", "UserID", "UserCode", autoCreateTables: true);

在我的配置文件中,我确实有以下条目,

<add name="fousuEntities"
     providerName="System.Data.EntityClient"
     connectionString="metadata=res://*/fousutable.csdl|res://*/fousutable.ssdl|res://*/fousutable.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;User Id=user;password=pwd;database=fousutable&quot;" />

请帮我看看我在这段代码中遗漏了什么?

  • Visual Studio 2010 SP1
  • MVC 4
  • 尝试使用简单的成员(member)提供程序
  • 已安装 Entity Framework 5.0
  • .Net FrameWork 4.0
  • 数据库 MySQL 5.1

更新 1:

Error Details :

Unable to find the requested .Net Framework Data Provider. It may not be installed.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.

                     using (var context = new UsersContext())
                     {
                         if (!context.Database.Exists())
                         {
                             // Create the SimpleMembership database without      Entity Framework migration schema

更新 2:

好吧,我可以通过如下更改 web.config 中的条目来消除上述错误,但最终会遇到另一个错误。

<add name="fousuEntities"
     connectionString="Server=MySQL; Database=fousutable; uid=user; pwd=pwd;"
     providerName="MySql.Data.MySqlClient"/>

并在 System.Data 下又添加了一项,

<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, Version=5.1.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
</system.data>

现在我得到的新错误是Exception has been thrown by the target of an invocation. LazyInitializer 行:

    public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            // Ensure ASP.NET Simple Membership is initialized only once per app start
            LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
        }

在引用了InnerException的细节之后,我得到了类似“The ASP.NET Simple Membership database could not be initialized.”的信息。

最佳答案

检查连接字符串的名称。很可能您已从“DefaultConnection”更改为任何其他值,并确保您已在行中的 SimpleMembershipInitializer 中正确更改它

WebSecurity.InitializeDatabaseConnection("MyNewConnectionString", "Users", "UserId", "UserName", autoCreateTables: true);

但您必须知道,在您的 AccountModels.cs 文件中,您有一个 UsersContext,您必须在构造函数中更新它:

    public UsersContext() : base("MyNewConnectionString")
    {
    }

否则它将继续尝试查找不存在的“DefaultConnection”。这可能是它失败的原因。

关于mysql - 连接字符串错误。无法找到请求的 .Net Framework 数据提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16233786/

相关文章:

sql-server - 如何增加 Entity Framework 和Sql Server之间的超时 session

sql-server - 如何控制 Entity Framework 中的参数嗅探和/或查询提示?

php - SQL 查询返回错误的时间戳

mysql - 如何在mysql中创建一个文本文件

c# - ReSharper“无法解析符号”,即使在项目构建时

c# - 从ASP.NET 4.5 MVC Web应用程序迁移到.NET Core

c# - MVC如何处理 Controller 中的按钮点击

mysql - 在 Duplicate Key 上仅更新 Null 或空值

php - 每个页面登录验证询问数据库

entity-framework - EF 4.1 Code First 中的 XML 数据类型