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

时间:2013-04-26 10:03:21

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

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

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

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

<add name="fousuEntities" 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;" providerName="System.Data.EntityClient" />

请帮助我在此代码中错过了什么?

  • Visual Studio 2010 SP1
  • MVC 4
  • 尝试使用simplemembership provider
  • 已安装的Entity Framework 5.0
  • .Net FrameWork 4.0
  • 数据库MySQL 5.1

更新1:

错误详情:

无法找到请求的.Net Framework数据提供程序。它可能没有安装。

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.ArgumentException:无法找到请求的.Net Framework数据提供程序。它可能没有安装。

Line 32:                     using (var context = new UsersContext())
Line 33:                     {
Line 34:                         if (!context.Database.Exists())
Line 35:                         {
Line 36:                             // 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>

现在我得到的新错误是,

调用目标抛出了异常。为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 的详细信息后,我得知,“无法初始化ASP.NET Simple Membership数据库。”

1 个答案:

答案 0 :(得分:0)

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

  

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

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

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

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