EF - 代码优先迁移:处理请求时数据库操作失败

EF - Migrations on Code First: A database operation failed while processing the request

我将 ASP.NET MVC Core 1.1.1 项目及其 SQL Server 2012 数据库发布到生产环境。几天后,我将数据库从生产服务器备份并恢复到开发机器,并将其重新连接到我的 VS2017 开发项目。但是,当我尝试 运行 应用程序时,出现以下错误:

A database operation failed while processing the request.

InvalidOperationException: An exception has been raised that is likely due to a transient failure. If you are connecting to a SQL Azure database consider using SqlAzureExecutionStrategy. 
SqlException: A connection was successfully established with the server, but then an error occurred during the login process. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.) 
Win32Exception: No process is on the other end of the pipe 

我通过将相同的登录名连接到 SSMS 检查了相同的数据库登录名,它成功连接到数据库。

此外,在上述错误消息下方,有以下消息,其中包含项目具有的所有迁移列表:

Applying existing migrations for MyProjectContext may resolve this issue
There are migrations for MyProjectContext that have not been applied to the database

20161209232754_myFirstMigration
20170121191004_mySecondMigration
20170303172256_myThirdMigration
20170303172256_myFourthMigration

In Visual Studio, you can use the Package Manager Console to apply pending migrations to the database:

PM> Update-Database
Alternatively, you can apply pending migrations from a command prompt at your project directory:

> dotnet ef database update

注意

  1. 开发机器是Windows 10,生产服务器是Windows Server 2012-R2。两台机器的 SQL Server 2012.
  2. 版本相同
  3. 我已经验证 VS2017 项目和 Db 在本地开发机器上的迁移完全相同。部署到生产环境后,迁移在开发机器上从未改变。当我 运行 从上面的错误消息中推荐的命令 PM> Update-Database -context MyProjectContext 时,我得到错误: CREATE DATABASE permission denied in database 'master'.

我过去遇到过类似的情况,其中 CREATE DATABASE permission denied in database 'master' 消息是由于完全省略了连接字符串而引起的(这听起来像是一件愚蠢的事情,但它可能通过错误的配置发生)多项目解决方案)。

检查您的配置字符串是否存在,具有您期望的名称,并且在 运行 时对您的应用程序可见。如果您的 Entity Framework 代码位于与主应用程序共享的 class 库中,请确保在应用迁移之前选择主应用程序作为您的启动项目,以便 EF 知道在哪里寻找App.config 文件。