我正在研究 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)