【问题标题】:EF Code First - The Provider did not return a ProviderManifestToken stringEF 代码优先 - 提供程序未返回 ProviderManifestToken 字符串
【发布时间】:2011-09-16 14:16:05
【问题描述】:

我正在尝试运行一个非常简单的 EF Code First 示例,但遇到了上述问题。我已经听从了这里的建议(How to configure ProviderManifestToken for EF Code First)但无济于事。我终于设法让 EF 通过将实际连接字符串传递给 DBContext 而不是我定义的连接字符串名称来创建我的数据库和表。

这是我最初在 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 网络接口,错误:26 - 定位服务器/实例时出错 指定)”

【问题讨论】:

  • 连接字符串是在你正在运行的项目的app.config中还是在库项目中?
  • 它在主项目的 app.config 中,而不是库中。如何解决这个问题?
  • 尝试将 app.config 添加到库项目并尝试共享主项目 app.config,但两种方法均无效。
  • 它是一个网络应用程序吗? (那么连接字符串必须进入 web.config。)如果从配置文件中完全删除连接字符串会发生什么?您是否收到相同的错误消息或其他错误?
  • 这是一个 WPF 应用程序。从 app.config 中删除连接字符串后,我得到了同样的异常。 [{“与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定实例)"}

标签: sql-server entity-framework entity-framework-4.1 connection-string


【解决方案1】:

回答这个问题的问题在于,罪魁祸首可能不止一个问题。

也就是说,我有几件事需要检查:

  1. 您的数据源名称似乎无效。您需要声明主机名和实例名。示例:.\SQLEXPRESS(注意 . 点)或 MyServerHostName\MySqlInstanceName

    使用 SQL Server Management Studio 验证您是否拥有有效的数据源并先在其中尝试。

  2. 权限。您正在使用集成安全性,因此建立数据库连接的应用程序的安全上下文必须具有适当的权限。检查事项:

    使用 SQL Server Mgmt Studio,连接到您的数据库。在左窗格(对象资源管理器)中选择您的数据库--> 数据库--> 选择您的数据库--> 安全性--> 用户。确保您可以验证用于运行应用程序的帐户是否已被明确授予权限,或者可以通过成为组成员来继承这些权限。

当我遇到此错误时,我的问题证明是我将 Integrated Security=SSPI 与“用户名 =”和“密码 =”混合在一起......没有意识到我需要 Integrated Security=false;我的用户和密码参数被忽略了。

对此不确定:我确实阅读了一些人建议(至少用于故障排除)设置 Persist Security Info=true。

【讨论】:

    【解决方案2】:

    我在 EF6 VS 2013 上遇到了类似的问题,当我在实体框架 - 逆向工程代码优先 - 连接属性对话框中选择“保存密码”时,问题得到了解决。希望这对某人有所帮助。

    【讨论】:

    • 这就是解决方案。
    • 很奇怪,但确实如此
    猜你喜欢
    • 2011-07-22
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2012-08-08
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多