代码优先迁移中的update-database命令出错

时间:2015-01-04 17:14:13

标签: c# sql-server entity-framework code-migration

我正在使用WPF中的桌面应用程序并使用 LocalDB 创建SqlRepository来存储数据。我正在使用以下工具

  • Visual Studio 2013社区,更新2
  • 代码首次迁移的实体框架6.1.2

我使用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 - 查找服务器/实例时出错   指定)

10 个答案:

答案 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 /实例。

  • 转到“开始”菜单 - &gt;控制面板 - &gt;管理工具 - &gt; 服务。
  • 在服务列表中找到SQL Server(实例名称,by 默认是EZPARTS5)并检查其状态,必须是启动
    (如果未启动,则右键单击SQL Server并选择
    从上下文菜单开始。)

2)防火墙阻塞端口1433(用于连接的MSSQL标准端口)。可以按照以下步骤禁用它:

  • 转到“开始”菜单 - &gt;控制面板 - &gt;管理工具 - &gt; 服务。
  • 查找防火墙服务,必须禁用它(如果不是,那就对了 单击该服务,然后从上下文菜单中选择“停止”。

注意:有关此内容的更多信息,请访问Microsoft官方网站:Link

3)对MSSQL协议禁用TCP / IP协议。要启用它,请参阅以下步骤:

  • 在“开始”菜单中导航到SQL Server配置管理器。
  • 在SQL Server配置中指定TCP / IP协议的设置 管理器。
  • 重新启动计算机。

注意:有关此内容的更多信息,请访问Microsoft官方网站:Link

4)确保您的数据库引擎配置为接受远程连接(如果您使用的是集中式数据库):

  • 打开SQL Server Management Studio。
  • 右键单击SQL Server实例 - &gt;属性 - &gt;连接 - &gt; 选中“允许与此服务器的远程连接”框。
  • 转到“常规”部分,检查指定的SQL Server名称 名称字段。

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;"

然后它对我有用

Error

Error solution

Error solved After error solved database

相关问题