EF核心遷移錯誤“無法刪除約束”,這在先前的遷移中已被刪除

c# entity-framework-core

使用Entity Framework核心代碼優先開發:

在我上次遷移的過程中,我切換了一個關係(簡化)

public class SiteUser
{
    public int Id {get; set;}

    public int EmployeeId { get; set; }

    [InverseProperty("SiteUser")]
    public virtual Employee Employee { get; set; }
}

public class Employee
{
    public int Id {get; set;}

    [InverseProperty("Employee")]
    public virtual SiteUser SiteUser { get; set; }
}

(這意味著SiteUser是Employee的一個子集,與預期的行為相反)

public class SiteUser
{
    public int Id { get; set; }
}

public class Employee
{
    public int Id {get; set;}

    public int SiteUserId { get; set; }

    [ForeignKey("SiteUserId")]
    [InverseProperty("Employee")]
    public virtual SiteUser SiteUser { get; set; }
}

這當然給了我一個遷移,除其他外,刪除了一個外鍵約束:

protected override void Up(MigrationBuilder migrationBuilder)
{
    migrationBuilder.DropForeignKey(
        name: "FK_SiteUser_Employee_EmployeeId",
        table: "SiteUser");
    //etc
}

我運行了遷移並從中更新了數據庫,並且運行正常。表和外鍵約束已正確更新到新模型。但是,我正在嘗試進行新的遷移,當我嘗試運行Update-Database時,我得到了

System.Data.SqlClient.SqlException (0x80131904): 'FK_SiteUser_Employee_EmployeeId' is not a constraint.
Could not drop constraint. See previous errors.

我的反應是,恩,EF,你在最後一次遷移中放棄了這個限制;你為什麼要再次放棄它?

新的遷移C#文件中沒有關於刪除該約束的任何內容,為什麼要嘗試?如何告訴EF停止崩潰這個DROP CONSTRAINT線?

一般承認的答案

看起來你可能會遇到問題#7535 。這將在2.0.0版中修復。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow