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

时间:2011-09-16 14:16:05

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

我正在尝试运行一个非常简单的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匹配,数据库产品不存在。

根据前一个线程的建议,我将连接字符串名称传递给ProductContext和基本DBContext cstor。这也不起作用。

最后,我传递了上面的连接字符串而且一切正常,db已创建并且表格。

我正在使用SQL Server 2008和EF 4.1。关于我做错了什么的想法?

谢谢,

更新

该应用程序是WPF应用程序,而不是Web应用程序。从 app.config 中删除connectionstring后,我得到了同样的异常:

  

“发生与网络相关或特定于实例的错误   建立与SQL Server的连接。找不到服务器或   无法访问。验证实例名称是否正确   SQL Server配置为允许远程连接。 (提供者:SQL   网络接口,错误:26 - 查找服务器/实例时出错   指定)“

2 个答案:

答案 0 :(得分:3)

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

那就是说,我看到了几件要检查的事情:

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

    首先使用SQL Server Management Studio验证您是否拥有有效的数据源。

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

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

  3.   

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

         

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

答案 1 :(得分:3)

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