簡體   English   中英

實體框架核心級聯刪除錯誤

[英]Entity Framework Core Cascade Delete Error

盡管已將其設置為 on-delete: "ReferentialAction.Restrict" 外鍵 "FK_TeamMember_Teams_TeamId",但在嘗試從 TeamMember 表中刪除記錄時會出現以下錯誤。 你能幫我解決這個錯誤嗎?

Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. 
See the inner exception for details.
---> Microsoft.Data.SqlClient.SqlException (0x80131904): The DELETE statement conflicted with the
REFERENCE constraint "FK_TeamMember_Teams_TeamId". The conflict occurred in database "mot", table 
"dbo.TeamMember", column 'TeamId'. The statement has been terminated.    


以下是遷移代碼塊

  migrationBuilder.CreateTable(
            name: "TeamMember",
            columns: table => new
            {
                Id = table.Column<Guid>(nullable: false),
                MarketingOfficerId = table.Column<Guid>(nullable: false),
                TeamId = table.Column<Guid>(nullable: true)
            },
            constraints: table =>
            {
                table.PrimaryKey("PK_TeamMember", x => x.Id);
                table.ForeignKey(
                    name: "FK_TeamMember_Employees_MarketingOfficerId",
                    column: x => x.MarketingOfficerId,
                    principalTable: "Employees",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Cascade);
                table.ForeignKey(
                    name: "FK_TeamMember_Teams_TeamId",
                    column: x => x.TeamId,
                    principalTable: "Teams",
                    principalColumn: "Id",
                    onDelete: ReferentialAction.Restrict);
            });


OnModelCreating 方法我也使用了以下方法。

modelBuilder.Entity<Team>()
       .HasMany(i => i.TeamMembers)
       .WithOne(i=>i.Team)
       .OnDelete(DeleteBehavior.Restrict);


謝謝你

我認為這種行為是正確的,因為當主表刪除一條記錄時,它應該刪除詳細表中的相關記錄。 保留它沒有意義。 數據將是冗余的。 但是,如果我們想制作這樣的場景,盡管我們在 migration.cs 中將 CascadeDelete 設置為 Restrict ,但它不會按預期工作。 以下文章將有助於理解這些行為。

https://docs.microsoft.com/en-us/ef/core/saving/cascade-delete

暫無
暫無

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

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