[英]EF Core 5 creates tables twice in migrations
我已經創建了一個項目和一個遷移,但似乎遷移在添加新遷移時並不關心以前的遷移,也就是說,遷移文件只是嘗試創建兩次相同的表。
我創建了兩個遷移, First
和Second
。 改變的是我向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.