提供者未返回 ProviderManifestToken 字符串实体框架
Posted
技术标签:
【中文标题】提供者未返回 ProviderManifestToken 字符串实体框架【英文标题】:The provider did not return a ProviderManifestToken string Entity Framework 【发布时间】:2013-09-28 18:06:24 【问题描述】:从数据库获取提供者信息时出错。这可能是由 Entity Framework 使用不正确的连接字符串引起的。检查内部异常以获取详细信息并确保连接字符串正确。
内部异常:"The provider did not return a ProviderManifestToken string."
我已经搜索了其他线程,因为有很多类似的错误,但我似乎找不到解决方案。
我正在使用 VS2012 Professional 和 SQL Server 2012。我可以使用 Windows 身份验证使用服务器资源管理器连接到服务器。我正在构建一个具有多层的网络表单应用程序。其中之一包含我的实体框架层,其中包含我的 Context 类。
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
<connectionStrings>
<add name="mysqlSERVER"
providerName="System.Data.SqlClient"
connectionString="Data Source=myComputer\MYSQLSERVER;Trusted_Connection=true"></add>
</connectionStrings>
</configuration>
这就是我的实体框架类库层中的 app.config 的样子。
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
</configuration>
另外,我尝试将 app.config defaultConnectionFactory 类型更改为
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
但它并没有改变任何东西。
我不确定我所做的任何改变意味着什么让我担心。当然我可以在网上找到解决方案并解决了我的问题,但我真的很想了解 web.config 以及这一切意味着什么。除了找到解决此问题的方法之外,谁能指出我学习 web.configs 的正确方向?
感谢您的帮助。
【问题讨论】:
是的,得到了这个,显然只是服务器名称不正确。 【参考方案1】:就我而言,是我的 SQL Server 实例没有运行。我只是启动了服务,一切正常。希望这对以后的人有所帮助。
【讨论】:
我这边类似,mysql正在运行,但我的数据库没有创建(由于之前的重新安装)【参考方案2】:我也遇到了这个错误,我解决了降级这些 NuGet 包的问题
MySql.Data - 6.9.12
MySQL.Data.Entity - 6.8.8
这是我的参考URL,我参考了
【讨论】:
【参考方案3】:我修好了。
只需要输入“。”对于数据源中的localmachine如下:
<add name="MYSQLSERVER"
providerName="System.Data.SqlClient"
connectionString="Data Source=.\MYSQLSERVER;Trusted_Connection=true"></add>
</connectionStrings>
【讨论】:
【参考方案4】:这是另一个可能的原因: 我在 AWS 上有我的 (ASP.NET) HTTP 服务器和 MySQL/Aurora 服务器(了解 AWS 不是 OP 的 cmets 的一部分)。 我的桌面(实际上是我们大楼的)IP 在 MySQL/Aurora 服务器的安全组中被列入白名单,因此一切都非常适合开发。 但是 ASP.NET 服务器的 IP 没有为 MySQL/Aurora 实例列入白名单,因此 ASP 服务器的 EF 连接请求被拒绝,并且 导致了在此主题的顶部。 深奥,但也许这对某人有帮助。
【讨论】:
我自己也遇到过这个问题【参考方案5】:对我来说,这就是以下所有内容。 1. DB不允许连接到我的开发环境。可能是防火墙限制。 2. 连接字符串的数据库凭据错误。 所以一般来说,连接字符串不正确。
【讨论】:
【参考方案6】:我在尝试连接mysql时遇到这个问题,原因是我忘记在“connectionStrings”中添加“密码”
【讨论】:
我遇到了同样的问题,当我看到你的提示我忘记了密码时解决了它,提供者连接字符串没有附带它。它只是有一个占位符,我必须用我的密码替换它:-)【参考方案7】:在我的情况下,参数是 v12.0,我改为 v11.0 并且它正在工作
【讨论】:
【参考方案8】:我遇到了同样的问题,使用包管理器重新安装 Npgsql 就可以解决问题。 似乎是版本控制问题。
【讨论】:
【参考方案9】:对我来说,它在服务器和实例之间使用双反斜杠,例如 .\SQLExPRESS;...等。
更正的是使用 .\SQLEXPRESS
希望对某人有所帮助。
【讨论】:
【参考方案10】:对于最近收到此问题的人,在更新到 MySql.Data 8.0.19 时,您还必须更新对 EntityFramework 的引用,Oracle 更改了包,现在是 MySql.Data.EntityFramework 而不是 MySql.Data.Entity 或 MySql。数据实体。给大卫·塞卡的道具:https://davidsekar.com/asp-net/mysql-error-the-provider-did-not-return-a-providermanifesttoken
【讨论】:
【参考方案11】:我经常忘记为什么这个错误经常出现。对我来说,通常我已经更改了数据库的凭据,并且没有在代码部分进行相同的更改。 以防万一我再来这里提醒自己。
【讨论】:
【参考方案12】:..最后(?!?)不要忘记在构建您的项目时选中“首选 32 位”,因为这将消除生成此错误消息的已知 BUG(具有内部异常消息 = '算术溢出')
【讨论】:
以上是关于提供者未返回 ProviderManifestToken 字符串实体框架的主要内容,如果未能解决你的问题,请参考以下文章
EF 代码优先 - 提供程序未返回 ProviderManifestToken 字符串
尽管向 createStore() 提供了 initialState,为啥我得到“Reducer [...] 在初始化期间返回未定义”?