EF Core无法连接服务器 - 与网络相关或特定于实例的错误

8

重要提示:在人们指出常见原因之前,请注意,连接字符串在我的本地机器上的一个项目中有效,但连接到相同的本地实例和相同的数据库的另一个项目上无法使用。

我遇到了一个奇怪的问题。我有2个EF core项目。第一个项目中的连接字符串完美运行。我可以输入“dotnet ef database update”,然后它就会将我的迁移推送到本地数据库。我将下面的字符串粘贴到我的第二个项目中,但它却报错:

建立与SQL Server的连接时发生网络相关或特定于实例的错误。未找到服务器或无法访问。请验证实例名称是否正确,并检查是否已配置SQL Server以允许远程连接。(提供程序:命名管道提供程序,错误:40-无法打开到SQL Server的连接)

这是我的连接字符串:

Server=.;Database=RAMSAPPDB;Integrated Security=False;Persist Security Info=True;MultipleActiveResultSets=True;

我无法想到任何一个理由,为什么在我的另一个项目中使用这个连接字符串,试图添加到相同的数据库时,会抛出此错误。我尝试在推送第二个项目中的迁移之前删除RAMSAPPDB中的所有表,但它就是不起作用。
如果我注释掉“ConnectionString”,我会收到如下错误信息:
connectionString 不能为空
所以我知道它正在使用我appsettings.json中的连接字符串。
如果您有任何关于可能原因的想法,将不胜感激。谢谢。

请查看以下链接:https://dev59.com/Qmkw5IYBdhLWcg3wXpab 和 https://social.msdn.microsoft.com/Forums/sqlserver/en-US/2a8f2e64-74cf-46f2-b2be-bbb08b1502cb/re-named-pipes-provider-error-40-could-not-open-a-connection-to-sql-server?forum=sqlreportingservices - Pawel
我看过一般的答案,但问题是它在一个项目中完美地运行,而在另一个项目中却不行。我有什么遗漏吗? - John Edwards
愚蠢的提示...你能调试并检查运行时使用的确切连接字符串吗? - Chetan
我正在包管理器控制台中运行“dotnet ef database update”,因此程序甚至没有运行,所以我知道它正在使用我的appsettings.json文件中的连接字符串。 - John Edwards
4个回答

10
这是一个与开发模式下的appsettings.json文件有关的问题。如果是这种情况,您应该寻找appsettings.Development.json文件并对其进行更改。
如果您在使用Visual Studio并启用了相关文件嵌套,则可以通过单击appsettings.json旁边的箭头或打开它并右键单击其标题栏,然后选择“打开包含文件夹”来访问appsettings.Development.json。修改连接字符串为所需内容,就可以继续使用了。

谢谢,我之前遇到了问题,但当我将“appsettings.production.json”改为“appsettings.json”后,一切都正常工作了! - Click Ok
非常感谢。我忘了那个,你救了我。 - Van Hung

5
我已经解决了。我很久以前写过这个,忘记了这件事。
 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{

optionsBuilder.UseSqlServer("Server=.\\SQLEXPRESS;Database=MYDB;Integrated     Security=True;MultipleActiveResultSets=True;");

}

在运行“dotnet ef database update”命令时,我的DbContext类被使用。我认为它应该使用appsettings.json中的内容。


天啊!我遇到了完全相同的问题!这对于 EF Core 迁移来说是一个非常难以察觉的问题,因为它自动添加的连接字符串与我们在部署时使用的不同(当然)。我一直苦思冥想,直到找到了你的答案!谢谢你。 - starmandeluxe

2

我的connectionString被复制并硬编码到了使用Entity Framework自动生成的DbContext中。这就是为什么我的应用程序没有使用appsettings.json中的connectionString。


-1

你应该安装 MSSQLSERVER ,因为 EF Core 无法连接到 SQLEXPRESS


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