Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 实体框架核心级联删除错误_Asp.net_Entity Framework_Entity Framework Core_Asp.net Core Webapi_Webapi - Fatal编程技术网

Asp.net 实体框架核心级联删除错误

Asp.net 实体框架核心级联删除错误,asp.net,entity-framework,entity-framework-core,asp.net-core-webapi,webapi,Asp.net,Entity Framework,Entity Framework Core,Asp.net Core Webapi,Webapi,虽然它已设置为on delete(在删除时):在外键“FK_TeamMember_TeamId”上设置为“ReferentialAction.Restrict”,但在尝试从TeamMember表中删除记录时会出现以下错误。你能帮我解决这个错误吗 Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for det

虽然它已设置为on delete(在删除时):在外键“FK_TeamMember_TeamId”上设置为“ReferentialAction.Restrict”,但在尝试从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);
            });
migrationBuilder.CreateTable(
名称:“团队成员”,
列:表=>new
{
Id=table.Column(可空:false),
MarketingOfficeId=table.Column(可空:false),
TeamId=table.Column(可空:true)
},
约束:表=>
{
表.PrimaryKey(“PK_团队成员”,x=>x.Id);
表1.外键(
名称:“FK\U团队成员\U员工\U营销办公室”,
列:x=>x.MarketingOfficeId,
原则性:“员工”,
主栏:“Id”,
onDelete:引用。级联);
表1.外键(
名称:“FK\U团队成员\U团队\U团队ID”,
列:x=>x.TeamId,
原则:“团队”,
主栏:“Id”,
onDelete:referentialiction.Restrict);
});

关于模型创建方法,我也使用了以下方法

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


谢谢

我认为这种行为是正确的,因为当主表删除记录时,它应该删除细节表中的相关记录。保留它没有意义。数据将是冗余的。但是,如果我们想创建这样的场景,尽管我们在migration.cs中将CascadeDelete设置为Restrict,但它将无法按预期工作。下面的文章将有助于理解这些行为


我认为这种行为是正确的,因为当主表删除记录时,它应该删除细节表中的相关记录。保留它没有意义。数据将是冗余的。但是,如果我们想创建这样的场景,尽管我们在migration.cs中将CascadeDelete设置为Restrict,但它将无法按预期工作。下面的文章将有助于理解这些行为


您使用的是什么版本的EF Core?Entity Framework Core v3.1.1您使用的是什么版本的EF Core?Entity Framework Core v3.1.1