EF Code First - 提供程序未返回ProviderManifestToken字符串

3
我正在尝试运行一个非常简单的EF Code First示例,但遇到了上述问题。我已经按照这里的建议进行了操作(如何为EF Code First配置ProviderManifestToken),但无济于事。最终,我通过将实际连接字符串传递给DBContext而不是我定义的连接字符串名称来使EF创建我的数据库和表。以下是我最初在app.config中定义连接字符串的方法。
<connectionStrings>
    <add name="ProductContext" 
         connectionString="integrated security=SSPI;
                           data source=MYMACHINE;
                           persist security info=False;
                           initial catalog=Product"
         providerName="System.Data.SqlClient" />
</connectionStrings>

名称 "ProductContext" 与类 ProductContext 匹配,但数据库 Product 不存在。

根据之前的建议,我将连接字符串名称传递给了 ProductContext 和基本的 DBContext cstor。这也没有起作用。

最后,我传递了上面的连接字符串,一切都正常工作,数据库和表被创建。

我正在使用 SQL Server 2008 和 EF 4.1。您有什么想法我做错了什么吗?

谢谢,

肯恩

更新

应用程序是一个 WPF 应用程序,而不是 Web 应用程序。当我从 app.config 中删除连接字符串后,我会得到相同的异常:

"在建立到 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。请检查实例名称是否正确,以及是否配置了允许远程连接的 SQL Server。(提供程序:SQL Network Interfaces,错误:26 - 找不到指定的服务器/实例)"


连接字符串是在您正在运行的项目的app.config中还是在库项目中? - Slauma
尝试将app.config添加到库项目中,也尝试共享主项目的app.config,但两种方法都没有成功。 - Lance
它是一个网页应用程序吗?(那么连接字符串必须放置在 web.config 中。)如果您完全从配置文件中删除连接字符串会发生什么?您是否会收到相同的错误消息或其他错误? - Slauma
抱歉回复晚了。那个连接字符串没有任何影响。 - Lance
我放弃了EF,最后使用了NHibernate。 - Lance
显示剩余4条评论
2个回答

3

我在使用EF6和VS2013时遇到了类似的问题,当我在Entity Framework - Reverse Engineer Code First - Connection Properties Dialog中选择'Save Password'时,问题得到了解决。希望这能帮助到某些人。


这是解决方案。 - mdelafuq
非常奇怪,但却是真的。 - user1916015

3
回答这个问题的问题就在于罪犯可能不止一个问题。
话虽如此,有几件事情需要检查:
1. 数据源名称似乎无效。您需要声明主机名和实例名。例如:.\SQLEXPRESS(注意点 .)或 MyServerHostName\MySqlInstanceName。首先通过使用 SQL Server Management Studio 确认您是否拥有有效的数据源。 2. 权限。您正在使用集成安全性,因此建立数据库连接的应用程序的安全上下文必须具有适当的权限。要检查的内容: - 使用 SQL Server Mgmt Studio 连接到您的数据库。 - 在左侧窗格(对象资源管理器)中选择您的数据库 -> 数据库 -> 选择您的数据库 -> 安全性 -> 用户。确保您可以验证用于运行应用程序的帐户已明确授予权限或可以通过成为组的成员继承它们。
引用: 当我遇到这个错误时,我的问题证明是我混合了 Integrated Security=SSPI 和 "Username =" 以及 "Password =" ... 没有意识到我需要 Integrated Security=false,我的用户和密码参数被忽略了。 不确定这个问题:我确实看到一些人建议(至少用于故障排除)将 Persist Security Info=true。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接