2009-09-17 142 views
3

最近我开始尝试ASP.NET MVC和实体框架。由于我的主机提供商只向我提供MySQL,我一直在试图设置它。 当地一切正常,但我出版后,我收到以下错误:发布网站的问题

[ProviderIncompatibleException: The store provider factory type 'MySql.Data.MySqlClient.MySqlClientFactory' does not implement the IServiceProvider interface. Use a store provider that implements this interface.] 

由于我没有经验,与此配置和谷歌是缺乏一个好的答案,我想我会尝试在这里。 我最好的猜测是web.config文件中缺少的东西,但不能真正弄清楚它是什么。

任何帮助将不胜感激!

回答

3

我想我找到了一个解决方案。 一)我要补充提供商我的web.config:

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

B)我需要引用(MySQL的DLL的在我的项目从连接器),只是要确定我将使用:

  • mysql.web.dll
  • mysql.data.entity.dll
  • mysql.data.dll
  • mysql.data.cf.dll

c)这些文件必须与网站一起发布,因此在它们的属性中,我将设置 'Copy Local'为true。

d)确保在web.config的版本对应的dll

可悲的是真实版的我就不能尝试一下本作至少8小时(因为我在工作中那一刻),但是当我在我们最好的想法的地方做一些思考时,这只是想到了。 编辑:作品:)

1

我有同样的问题(mysql,发布网站主机,VS2008,MySql连接器6.1.3.0)。我不得不做一些事情来让我的托管网站能够正常工作。我在另一个网站上发现了这些解决方案,抱歉我没有这些链接,所以我不能向他们提供信用。

首先我添加了如上所述的参考。以及在我的BIN文件夹中使用DLL的dbFactories代码,而不是服务器GAC。其次,我必须创建单独的msl,ssdl,csdl(我通过创建一个Windows窗体应用程序并将清单更改为“复制到输出目录”来实现此目的)。我把这些文件放在我网站的APP_DATA目录中。

然后我改变了我的连接字符串,如下所示。此外,连接字符串最初是用“quot”创建的,而不是单撇号的?我想一个错误。

add name =“classEntities”connectionString =“metadata =〜\ App_Data \ Model.csdl |〜\ App_Data \ Model.ssdl |〜\ App_Data \ Model.msl; provider = MySql.Data.MySqlClient; provider connection string ='server = hostServer; user id = myUsername; password = myPassword; database = schema'“providerName =”System.Data.EntityClient“

希望这可以帮助某人,我花了一两个礼拜的时间, 。

1

上面列出的文件是MySql.Data.dll的相关程序集,并且必须位于bin文件夹中,但仅用于在您的Web应用程序托管的服务器上未安装mysql.data.msi软件包的情况。否则无需将这些文件放在bin文件夹中。

只需在服务器上安装mysql.data.msi,并且只将MySql.Data.dll放入bin文件夹并且应用程序成功运行。

哈比卜·哈米德 [email protected]

0

的文件: “mysql.web.dll”, “mysql.data.entity.dll”, “mysql.data.dll” 既要位于主机的“bin”文件夹和“root-www”文件夹中。

文件:“mysql.data.cf.dll”不会做任何事情,如果将在“bin”文件夹中,它将会报错。