EF Core 5 在迁移中创建了两次表

     2023-02-15     42

关键词:

【中文标题】EF Core 5 在迁移中创建了两次表【英文标题】:EF Core 5 creates tables twice in migrations 【发布时间】:2021-04-22 04:43:32 【问题描述】:

我已经创建了一个项目和一个迁移,但似乎迁移在添加新迁移时并不关心以前的迁移,也就是说,迁移文件只是尝试创建相同的表两次。

我创建了两个迁移,FirstSecond。改变的是我向Post 实体添加了一个字符串属性(此处未显示)。我的预期是这样的:

migrationBuilder.AddColumn(...)

但是我得到了一个Second 迁移,其中包含来自First 迁移的所有内容,但是在创建表Post 时,它添加了列。几乎就像它甚至不关心有一个 First 迁移,因此就像它的第一次迁移一样。

第一

public partial class First : Migration

    protected override void Up(MigrationBuilder migrationBuilder)
    
        migrationBuilder.CreateTable(
            name: "AspNetRoles",
            columns: table => new
            
                Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
                Name = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
                NormalizedName = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
                ConcurrencyStamp = table.Column<string>(type: "nvarchar(max)", nullable: true)
            ,
            constraints: table =>
            
                table.PrimaryKey("PK_AspNetRoles", x => x.Id);
            );
    ...

第二

public partial class Second : Migration

    protected override void Up(MigrationBuilder migrationBuilder)
    
        migrationBuilder.CreateTable(
            name: "AspNetRoles",
            columns: table => new
            
                Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
                Name = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
                NormalizedName = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
                ConcurrencyStamp = table.Column<string>(type: "nvarchar(max)", nullable: true)
            ,
            constraints: table =>
            
                table.PrimaryKey("PK_AspNetRoles", x => x.Id);
            );
    ...

如您所见,它们是相同的,为什么会这样?

【问题讨论】:

嗯 - 在生成第二个之前,您是否应用 First migraton 到您的数据库? @marc_s 是的,我做到了,获取迁移列表将第二个显示为(待定)。但为什么需要这样做?对我来说,它可以弄清楚自上次迁移以来发生了什么变化,而不是实际数据库中的变化。 @marc_s 我发现了问题,超级奇怪,但事后看来,为什么一切都表现得如此奇怪是有道理的。 【参考方案1】:

事实证明,由于某种原因,Visual Studio for Mac 再次对我耍了花招。以下行已添加到我的 csproj 文件中。

<Compile Remove="Migrations\MainDbContextModelSnapshot.cs" />
<Compile Remove="Migrations\20210102195131_Test1.Designer.cs" />
<Compile Remove="Migrations\20210102195131_Test1.cs" />

现在,为什么它尝试再次从头开始创建所有内容,因为没有快照,这一切都说得通了。无论如何,如果这个奇怪的事情发生在其他人身上,你可能想看看你的 csproj 文件。我无法解释为什么要添加这些。

如果您看到这些行,解决方案就是删除它们,并且一切都应该按预期工作。

【讨论】:

如何在 EF7(Core) 中创建与同一个表的多个关系?

...间】:2016-01-2614:15:54【问题描述】:我正在尝试构建一个迁移,但它在以下类上绊了一下:publicclassUnitpublicintUnitIDget;set;...publicNullable<int>Prev 查看详情

如何在 EF Core 中调用 ThenInclude 两次?

】如何在EFCore中调用ThenInclude两次?【英文标题】:HowtocallThenIncludetwiceinEFCore?【发布时间】:2018-11-2614:26:02【问题描述】:我正在创建一个ASP.NETCoreAPI应用程序,并依赖于EFCore。我有这样定义的实体:publicclassAppUser:IdentityUserpublic... 查看详情

EF Core 5.0 - 更改“定义查询”映射实体时是不是需要生成迁移?

】EFCore5.0-更改“定义查询”映射实体时是不是需要生成迁移?【英文标题】:EFCore5.0-Doyouneedtogenerateamigrationwhenchanginga"DefiningQuery"-mappedentity?EFCore5.0-更改“定义查询”映射实体时是否需要生成迁移?【发布时间】:2021-06-0... 查看详情

在应用所有 EF Core 迁移后运行代码

】在应用所有EFCore迁移后运行代码【英文标题】:RuncodeafterallEFCoremigrationsareapplied【发布时间】:2022-01-1515:06:43【问题描述】:EFCore5有各种events,但它们与DbContext相关。没有与迁移相关的事件(Migration)。我想在应用所有迁移后运... 查看详情

EF Core 迁移:在存在时删除唯一约束

】EFCore迁移:在存在时删除唯一约束【英文标题】:EFCoreMigrations:DropUniqueConstraintwhenitexists【发布时间】:2022-01-2320:16:41【问题描述】:上下文我在SQLServer中有一个表,它在表的四列上有一个唯一索引。当使用EFCore迁移中的migratio... 查看详情

如何在 EF Core 中创建关系?

】如何在EFCore中创建关系?【英文标题】:HowdoIcreaterelationshipsinEFCore?【发布时间】:2018-04-1919:16:14【问题描述】:我正在构建一个带有WebAPI后端和Angular5前端的ASP.NETCore2.0应用程序。对于我的数据访问层,我使用的是EntityFrameworkC... 查看详情

如何使用 EF Core 在 ASP.NET Core 中取消应用迁移

】如何使用EFCore在ASP.NETCore中取消应用迁移【英文标题】:HowtounapplyamigrationinASP.NETCorewithEFCore【发布时间】:2016-11-0615:25:03【问题描述】:当我在VS2015中使用EFCore的ASP.NETCore项目运行PM&gt;Remove-Migration-contextBloggingContext时,我收... 查看详情

在 .NET 5 项目的输出目录中创建了多余的“运行时”文件夹

...2021-08-2709:31:28【问题描述】:我刚刚将一个(WPF).NET4.6项目迁移到.NET5。我注意到它现在在输出目录中创建了一个名为“runtimes”的文件夹,其中包含许多平台相关的dll。由于这个应 查看详情

无法在 asp.net core EntityFrameworkCore.core 中创建迁移

】无法在asp.netcoreEntityFrameworkCore.core中创建迁移【英文标题】:Can\'tcreateamigrationinasp.netcoreEntityFrameworkCore.core【发布时间】:2021-10-1420:31:02【问题描述】:来自程序集“MySql.Data.EntityFrameworkCore,Version=8.0.22.0,Culture=neutral,PublicKe 查看详情

在 asp.net core 6 应用程序的启动时运行 EF 迁移

】在asp.netcore6应用程序的启动时运行EF迁移【英文标题】:RunEFmigrationsonStartupinasp.netcore6application【发布时间】:2021-12-3112:23:19【问题描述】:如何在asp.net6应用程序中启动时运行ef迁移。这是我的Program.csvarbuilder=WebApplication.CreateBu... 查看详情

EF Core 添加迁移构建失败

】EFCore添加迁移构建失败【英文标题】:EFCoreadd-migrationBuildFailed【发布时间】:2017-11-3019:37:42【问题描述】:我有一个开发人员收到“构建失败”。在.NETCoreEF项目中运行add-migration时,没有解释构建失败的原因。您如何解决此错... 查看详情

我可以避免在 EF Core 中使用迁移吗?

】我可以避免在EFCore中使用迁移吗?【英文标题】:CanIavoidusingmigrationinEFCore?【发布时间】:2021-10-0815:06:30【问题描述】:我正在创建一个ASP.NETWebAPI项目,它从MSSQL数据库中获取数据。使用Scaffold命令后,我拥有所有模型和适当... 查看详情

EF Core 添加迁移调试

】EFCore添加迁移调试【英文标题】:EFCoreAddMigrationDebugging【发布时间】:2017-05-3012:47:27【问题描述】:如何使用断点进入OnModelCreating并查看我的逻辑是否错误,或者ModelBuilder是否正在做一些我没有预料到的事情?我看过很多关于... 查看详情

ASP - 在启动时核心迁移 EF Core SQL DB

】ASP-在启动时核心迁移EFCoreSQLDB【英文标题】:ASP-CoreMigrateEFCoreSQLDBonStartup【发布时间】:2016-10-1307:18:21【问题描述】:是否可以让我的ASPCoreWebAPI确保使用EFCore将数据库迁移到最新的迁移?我知道这可以通过命令行完成,但我想... 查看详情

如何在 EF Core Code First 中自定义迁移生成?

】如何在EFCoreCodeFirst中自定义迁移生成?【英文标题】:HowtocustomizemigrationgenerationinEFCoreCodeFirst?【发布时间】:2020-12-1322:13:01【问题描述】:我的DbContext中有一个特殊的基表类型。当从它继承时,我需要生成一个额外的“SQL”迁... 查看详情

如何在启用了 EF Core 迁移的 Azure 中运行蓝绿色部署

】如何在启用了EFCore迁移的Azure中运行蓝绿色部署【英文标题】:HowdoIrunabluegreendeploymentinAzurewithEFCoreMigrationsenabled【发布时间】:2020-02-2417:45:09【问题描述】:我想运行蓝绿色部署;但是,EFMigrations似乎阻止了这一点。如果我将... 查看详情

EF Core 迁移在 ASP.NET Core Web 项目中不起作用。空上/下

】EFCore迁移在ASP.NETCoreWeb项目中不起作用。空上/下【英文标题】:EFCoremigrationsnotworkingininASP.NETCorewebproject.EmptyUp/Down【发布时间】:2016-09-1912:36:37【问题描述】:我刚开始使用EFCore构建一个新的ASP.NetCore网站。我使用带有用户身份... 查看详情

EF Core 迁移

】EFCore迁移【英文标题】:EFCoremigration【发布时间】:2021-11-2311:41:59【问题描述】:我有一个工作的Web应用程序(一个端点),其中包含一些方法并连接到sqlserver中的两个表。这个应用程序完全是我自己在一个ashx文件中从头开... 查看详情