0%

C# EF codefirst 迁移 Migrations问题记录

注1: 由于时间久远,之前的旧代码要求新增功能,需要升级,而之前的数据库不能放弃,想直接迁移到新电脑上直接使用

注2:因为长时间未使用EF codefirst相关操作,为了方便问题追溯,以此来记录此次碰到的各种问题

此次迁移的指令操作全部都在VS Studio 2022中的程序包管理器控制台中操作

Migration的命令如下:

1
Enable-Migrations -Force
1
Add-Migration
1
Update-Databse -Verbose

1 启动Migrations

​ 如果是初始启动,且当前没有存在旧有的数据库,直接使用 Enable-Migrations 进行 启用migration用来初始化数据库;

​ 如果存在旧有的数据库,则需要使用 Enable-Migrations -Force 来定位数据库的位置;

2 迁移Migrations

​ 使用 Add-Migration + 标签来标记数据库的记录;

3 更新到数据库

使用 Update-Databse 进行数据库更新;

操作过程中遇到问题:

SQL Server问题汇总:

  1. error: 26 - 定位指定的服务器/实例时出错 (Microsoft SQL Server,错误: -1)

分析原因:

Target database is: ‘*****’ (DataSource: .\\SQLEXPRESS, Provider: System.Data.SqlClient, Origin: Configuration).

经断点调试发现:以下位置代码中的连接字符串

1
2
3
4
public HiContext() : base("Hi.Scanner")
{
System.Diagnostics.Debug.Write(Database.Connection.ConnectionString);
}

与下面的字符串不符

1
2
3
<connectionStrings>
<add name="HiContext" connectionString="Data Source=(localdb)\\ProjectV13;Initial Catalog=Hi.Scanner;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=True;MultipleActiveResultSets=true" providerName="System.Data.SqlClient" />
</connectionStrings>

改正后,出现以下问题:

Target database is: ‘Hi.Scanner’ (DataSource: (localdb)\\ProjectV13, Provider: System.Data.SqlClient, Origin: Configuration).

System.Data.SqlClient.SqlException (0x80131904):

在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。(provider: SQL Network Interfaces, error: 50 - 发生了 Local Database Runtime 错误。指定的 LocalDB 实例名称无效。)