提供程序未返回ProviderManifestToken字符串错误

时间:2012-04-22 16:17:12

标签: mysql asp.net-mvc-3 entity-framework dbcontext

我正在尝试使用ASP.Net MVC3,Entity Framework和MySQL创建一个Web应用程序。

我已将以下代码添加到我的Web.Config文件中。

<connectionStrings>
    <add name="ContactContext" connectionString="server=localhost;database=contacts;uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/>

  </connectionStrings>

我还在项目“Contact_Me”中创建了“Person”Model,“ContactContext”。当我尝试创建一个包含Person Model和Contact上下文的“ContactController”时,它会给我以下错误

  

“无法检索”Connect_Me.Models.Persons“的元数据   provider没有返回ProviderManifestToken字符串“

MYSQ & MVC3 SQL connection error \ ProviderManifestToken but I am using MySQL,这是我最接近的问题。但答案并没有解决我的问题。

提前致谢

8 个答案:

答案 0 :(得分:20)

我知道这对于你们几个人来说可能是非常基本的,但是在EF无法找到要使用的连接字符串的情况下也会抛出此异常。 如果您在多层应用程序中工作,请确保将连接字符串添加到客户端应用程序,而不是包含数据访问代码的类库。 我的2美分。

答案 1 :(得分:10)

当我的sql server实际关闭时,我收到此错误。因此,请确保您的SQL Server已启动并运行。

答案 2 :(得分:2)

问题在于MySQL连接器/网络。

我之前使用的是MySQL连接器/ Net 6.3.5,在我卸载它并安装了MySQL连接器/ Net 6.5.4后,问题得到解决。您可以在http://www.mysql.com/products/connector/

找到最新的连接器

答案 3 :(得分:1)

有时这个问题也会因为sslmode而出现,对我来说,解决方法是将sslmode = None添加到连接字符串

我必须对来自

的连接字符串进行一些小改动
<add name="Connection" connectionString="Server=SOMEHOST;Database=DB;Uid=USR1;Pwd=PASS1;" providerName="MySql.Data.MySqlClient" />

<add name="Connection" connectionString="Server=SOMEHOST;Database=DB;Uid=USR1;Pwd=PASS1;sslmode=None;" providerName="MySql.Data.MySqlClient" />

答案 4 :(得分:0)

可能是您的连接字符串中出现错误。您是否尝试使用上面的登录连接到数据库实例。尝试更改连接字符串

connectionString="Data Source=.;Initial Catalog=contacts;Integrated Security=True uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/>

如果您使用的是sql server,请使用上面的命令,否则如果您使用sql express,请使用下面的

 connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=contacts;Integrated Security=True uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/>

答案 5 :(得分:0)

尽管已经回答了这个问题,但我遇到了同样的问题而且我遇到了连接字符串;我有部分&#34;集成安全&#34;当我真的不应该使用它时;我依赖于数据库身份验证。

我删除了&#34; Integrated Security = True&#34;部分和它完美地工作:)

答案 6 :(得分:0)

重新启动计算机对我有用。

在显示此消息时,我发现我的计算机[Windows 10]与使用相同配置部署应用程序的测试服务器之间没有任何差异,并且在那里正常工作并使用相同的数据库。这意味着问题可能没有连接到测试服务器上运行的数据库。

值得一提的是重启时有一些Windows更新未决。

答案 7 :(得分:0)

如果您在使用MySql.Data.Entity(最新版本为6.10.X)(<最新>)和 MySql.Data(最新版本)的EntityFramework项目中升级Nuget引用,也会出现此错误。版本是8.0.X)。这些版本号应该匹配。您应该将MySql.Data.EntityFramework软件包与MySql.Data 8.0及更高版本一起使用,并将MySql.Data.Entity软件包与6.10及更高版本一起使用。

此博客文章中有更多详细信息:https://davidsekar.com/asp-net/mysql-error-the-provider-did-not-return-a-providermanifesttoken