我正在尝试运行一个非常简单的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 - 查找服务器/实例时出错 指定)“
答案 0 :(得分:3)
回答这个问题的问题在于罪魁祸首可能不止一个问题。
那就是说,我看到了几件要检查的事情:
您的数据源名称无效。您需要声明主机名和实例名称。示例:。\ SQLEXPRESS (注意.dot)或 MyServerHostName \ MySqlInstanceName 。
首先使用SQL Server Management Studio验证您是否拥有有效的数据源。
<强>权限即可。您正在使用集成安全性,因此创建数据库连接的应用程序的安全上下文必须具有适当的权限。要检查的事项:
使用SQL Server Mgmt Studio连接到您的数据库。在左窗格中选择您的数据库(对象资源管理器) - &gt;数据库 - &gt;选择你的数据库 - &gt;安全 - &gt;用户。确保您可以验证用于运行应用程序的帐户是否已被明确授予权限,或者可以通过成为这些组的成员来继承它们。
当我遇到这个错误时,我的问题证明是我将Integrated Security = SSPI与“Username =”和“Password =”混合在一起......没有意识到我需要Integrated Security = false;我的用户名和密码参数被忽略。
对此不确定:我确实读过一些人建议(至少是故障排除)设置Persist Security Info = true。
答案 1 :(得分:3)
我在EF6 VS 2013上遇到了类似的问题,当我在实体框架上选择“保存密码”时,问题得到了解决 - 反向工程师代码优先 - 连接属性对话框。希望这有助于某人。