我正在使用WPF中的桌面应用程序并使用 LocalDB 创建SqlRepository来存储数据。我正在使用以下工具
我使用Microsoft SQL Server数据库文件(SqlClient)配置创建了本地数据库。数据库创建成功,下面是从Sql
获取的连接字符串Data Source=(LocalDB)\v11.0;Initial Catalog=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False
我在app.config中使用相同的连接字符串。我可以在Visual Studio中的SQL Server数据库资源管理器中查看数据库对象。但是当在Nuget包管理器控制台中运行update-database命令时,我收到以下错误:
发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 查找服务器/实例时出错 指定)
答案 0 :(得分:59)
我遇到了类似的问题并在我改变了#34启动项目时解决了这个问题。从另一个模块到包含对解决方案中所有其他项目的引用的模块。 右键单击模块>>单击"设置为启动项目"
答案 1 :(得分:8)
当项目中没有标记为启动项目的连接字符串时,会发生此问题。然后EF尝试连接到某个默认数据库引擎以执行更新。在我的情况下,它试图使用快递,由于某种原因,它无法连接。并且错误被抛出。
运行你的" update-database"选项" -Verbose"。其中一行显示了使用哪个StartUp项目。检查此项目中的连接字符串,或将启动项目更改为具有正确连接字符串的项目。这解决了这个问题。
答案 2 :(得分:3)
正如其他答案中所解释的,问题通常来自于在Package Manager Console中使用错误的初始项目。
在我的情况下,控制台忽略了我在默认项目下拉列表中选择的值,以及-StartUpProjectName
参数,并重现了尝试连接到某个默认数据库引擎的错误行为,正如Mikk的回答所描述的那样,我使用SqlExpress引擎的情况。
我的问题是由错误的解决方案配置引起的:如果您的解决方案有多个项目并且打算使用配置选项“多个启动项目”运行,但您只是从源代码控制存储库下载它,那么它是可能是默认配置选项“单个启动项目”正在应用于解决方案(此配置值通常不在源代码控制中签入)。在这种情况下,程序包管理器控制台只是忽略在其组合中选择的启动项目,只是在解决方案中应用默认启动项目,该项目可能没有连接字符串,如Mikk的回答中所述。
所以我通过更改解决方案属性来修复它:Common properties
/ Startup project
/选择Multiple startup projects
而不是Single startup project
,之后包管理器控制台将接受项目命名并更新正确的数据库。
答案 3 :(得分:2)
尝试使用此Connectionstring:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=D:\USERS\USERNAME\DOCUMENTS\TestDatabase\testdb.MDF;Initial Catalog=testdb;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
答案 4 :(得分:2)
我能够通过adding parameters to the update-database command来解决这个问题:
update-database -StartupProjectName MyApp.Web -ConnectionStringName MyAppConnectStringInWebConfig
答案 5 :(得分:1)
发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 查找服务器/实例时出错 指定)
此错误消息通知您无法连接到SQL Server
。可能的原因及其消除描述如下:
1)SQL Server未启动。启动它将允许您在可用SQL Server的下拉列表中查看SQL Server /实例。
2)防火墙阻塞端口1433(用于连接的MSSQL标准端口)。可以按照以下步骤禁用它:
注意:有关此内容的更多信息,请访问Microsoft官方网站:Link
3)对MSSQL协议禁用TCP / IP协议。要启用它,请参阅以下步骤:
注意:有关此内容的更多信息,请访问Microsoft官方网站:Link
4)确保您的数据库引擎配置为接受远程连接(如果您使用的是集中式数据库):
5)如果您使用的是命名的SQL Server实例,请确保在连接字符串中使用该实例名称。通常,指定数据库服务器所需的格式是machinename \ instancename。
6)确保您的登录帐户对登录时使用的数据库具有访问权限。 替代方案: 如果仍然无法建立连接,则可能需要在服务器上创建一个SQL帐户,在相关数据库上创建相应的SQL用户,并使用此用户名/密码登录数据连接到SQL Server。
从此link
引用答案 6 :(得分:1)
我解决了将初始项目更改为Entity Project的错误。
查找
更新 - 数据库-Verbose 使用StartUp项目'SCVE.Web'。&lt; - 此错误 使用NuGet项目'SCVE.EntityFramework'。
答案 7 :(得分:1)
如果您尝试连接到Sql Server而不是localdb,请确保web.config文件中的默认连接工厂如下所示:
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="Data Source=.\SQLEXPRESS2012; Integrated Security=True; MultipleActiveResultSets=True" />
</parameters>
</defaultConnectionFactory>
答案 8 :(得分:0)
我在新创建的ASP.NET项目中遇到了同样的问题。
首先,我尝试如上所述设置启动项目。没有选择启动项目,我无法选择一个。
最终,我将Visual Studio从2015 Update 1更新为2015 Update 3和
update-database
执行没有问题。
答案 9 :(得分:0)
PM>Update-Database
我今天在4个小时内所做的错误和解决方案。
我在.net编码方面非常新,但是在PHP中我有10多年的经验。
解决这个问题花了我4个小时。
1.我的first Mistake:
我的笔记本电脑本地没有Microsoft SQL Server 2019,我是通过AZURE拥有的,不适用于localhost,因此我在下载后在本地安装了此软件,大约花了2个小时。
2.第二个更改错误=
"DevConnection": "Server=localhost;Database=PaymentDetailDB;Trusted_Connection=True;MultipleActiveResultSets=True;"
然后它对我有用