dotnet ef数据库更新不适用于特定的迁移

时间:2019-07-27 05:17:26

标签: c# .net-core ef-code-first ef-core-2.0 ef-core-2.1

我正在研究 dotnet核心,正在开发 WebApi ,并且在我的VS解决方案中具有以下项目结构:

 Solution Project
    |-Project.Data
    |-Project.Entities
    |-Project.WebApi
    |-Project.WebApi.Test

在Project.Data中,我有一个migrations文件夹,其中包含在首次启用,添加和更新DB时创建的初始文件。

Migrations
|-20190712XXXXX_InitialDataBaseModel.cs
|-DataContextModelSnapshot.cs

然后,我在模型上更新了Budget属性,并在dotnet CLI上执行了以下代码:

C:\[Solution folder + Project.Data path]> dotnet ef migrations --startup-project ../Project.WebApi add UpdatingBudgetColumn

效果很好。正确的迁移文件已创建:

Migrations
    |-20190712XXXXX_InitialDataBaseModel.cs
    |-20190726XXXXX_UpdatingBudgetColumn.cs --> This one
    |-DataContextModelSnapshot.cs

但是,当尝试更新数据库时:

dotnet ef database update --startup-project ../Project.WebApi 20190726XXXXX_UpdatingBudgetColumn

我遇到以下错误:

info: Microsoft.EntityFrameworkCore.Migrations[20402]
      Applying migration '20190712144448_[InitialDatabaseModel'.
Applying migration '20190712XXXXX_InitialDataBaseModel.cs'.
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
      Failed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
      CREATE TABLE [TableA] (
          [Id] Int NOT NULL IDENTITY,
          [Description] Varchar(50) NOT NULL,
          [Budget] char NOT NULL,
          CONSTRAINT [PK_TableA] PRIMARY KEY ([Id])
      );
System.Data.SqlClient.SqlException (0x80131904): ***There is already an object named 'TableA' in the database.***
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)

我了解错误以及发生的原因。 EF正在执行第一次迁移。

我的问题是: 为什么Entity Framework Core执行不同于指定的迁移? (20190726XXXXX_UpdatingBudgetColumn)

0 个答案:

没有答案