簡體   English   中英

EF Core 5 在遷移中創建了兩次表

[英]EF Core 5 creates tables twice in migrations

我已經創建了一個項目和一個遷移,但似乎遷移在添加新遷移時並不關心以前的遷移,也就是說,遷移文件只是嘗試創建兩次相同的表。

我創建了兩個遷移, 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);
            });
    ...

如您所見,它們是相同的,為什么會發生這種情況?

事實證明,出於某種原因,Visual Studio for Mac 再次對我耍了花招。 以下行已添加到我的 csproj 文件中。

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

現在這一切都說得通了,因為沒有快照,它為什么要再次嘗試從頭開始創建所有內容。 無論如何,如果這個奇怪的事情發生在其他人身上,你可能想看看你的 csproj 文件。 我無法解釋為什么要添加這些。

解決方案是在您看到這些線條時簡單地刪除它們,並且一切都應該按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM