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

2024-04-27

我试图运行一个非常简单的 EF Code First 示例,但遇到了上述问题。我遵循了这里的建议(如何为 EF Code First 配置 ProviderManifestToken https://stackoverflow.com/questions/4741499/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。关于我做错了什么有什么想法吗?

Thanks,

Ken

Update

该应用程序是 WPF 应用程序,而不是 Web 应用程序。从中删除连接字符串后,我得到了相同的异常应用程序配置:

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


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

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

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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF Code First - 提供程序未返回 ProviderManifestToken 字符串 的相关文章

随机推荐