将ASP.NET MVC3网站连接到MySQL的问题

时间:2013-10-01 02:08:34

标签: c# mysql asp.net asp.net-mvc

我在将我的网站(asp.net mvc3)连接到MySQL时遇到问题。

Localhost正在运行,但在服务器上我收到以下错误:

  

错误:无法找到数据提供者。请求的网络框架。也许它没有安装。

     

Stacktrace: [ArgumentException:在配置中找不到指定的存储库提供程序或无效。]

  System.Data.EntityClient.EntityConnection.GetFactory(字符串   providerString)+11468668
  System.Data.EntityClient.EntityConnection.ChangeConnectionString(字符串   newConnectionString)+575
  System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(字符串   name,AppConfig config)+144 ...   +21 System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() +44 System.Linq.Queryable.Where(IQueryable 1个来源,表达式1 predicate) +85 AcusticoA3.Controllers.HomeController.Index() +978 lambda_method(Closure , ControllerBase , Object[] ) +79
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary
2个参数)+264
  System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext   controllerContext,ActionDescriptor actionDescriptor,IDictionary 2 parameters) +39
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +124 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func
1续)   +727142 System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext   controllerContext,IList 1 filters, ActionDescriptor actionDescriptor, IDictionary 2个参数)+309
  System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext   controllerContext,String actionName)+727076
  System.Web.Mvc.Controller.ExecuteCore()+159
  System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)   +334 System.Web.Mvc。&lt;&gt; c_ DisplayClassb.b _5()+62 System.Web.Mvc.Async。&lt;&gt; c_ DisplayClass1.b _0()+15   System.Web.Mvc。&lt;&gt; c_ DisplayClasse.b _d()+52
  System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   +606 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&amp; completedSynchronously)+288

我正在使用Mysql.connector 6.6.5.0和EntityFramework 5.0。

我的关系字符串:

  <connectionStrings>
    <add name="MyEntities" connectionString="metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=[HOST];user id=[USER]; password=[PASSWORD]; database=[DATABASE]&quot;" providerName="System.Data.EntityClient"/>   </connectionStrings>

2 个答案:

答案 0 :(得分:1)

我解决了。

只需将提供者dll放在bin文件夹中,然后在Web.config中进行设置:

  <system.data>
    <DbProviderFactories>
      <clear />
      <remove invariant="MySQL Data Provider"/>
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />     
    </DbProviderFactories>   </system.data>

请记住更改提供商版本。

答案 1 :(得分:0)

您还可以通过将“Copy Local”设置为 True 来告诉编译器将这些文件复制到bin目录中:

enter image description here