Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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
C# 删除子记录EF Core时如何将外键值设置为Null_C#_Sql Server_Entity Framework Core_Ef Code First - Fatal编程技术网

C# 删除子记录EF Core时如何将外键值设置为Null

C# 删除子记录EF Core时如何将外键值设置为Null,c#,sql-server,entity-framework-core,ef-code-first,C#,Sql Server,Entity Framework Core,Ef Code First,我对Entity Framework非常陌生,我有一个可以从SQL Server数据库中删除记录的API,我有子表ResidentityPE,可以使用ID删除行,我有一个外键ResidentityPEID的父表PropertyGroup。当我删除链接的ResidentityPE中的一行时,是否有办法将外键的值设置为NULL 因此,我需要的行为是,如果我从residentype表中删除ID 1,我需要EF Core将PropertyGroups中的residentypeid列设置为NULL

我对Entity Framework非常陌生,我有一个可以从SQL Server数据库中删除记录的API,我有子表
ResidentityPE
,可以使用ID删除行,我有一个外键
ResidentityPEID
的父表
PropertyGroup
。当我删除链接的
ResidentityPE
中的一行时,是否有办法将外键的值设置为
NULL


因此,我需要的行为是,如果我从
residentype
表中删除ID 1,我需要EF Core将
PropertyGroups
中的
residentypeid
列设置为
NULL
(或空)。我已经尝试在我的
DataContext
类中重写
OnModelCreating
方法,但是运气不好,任何建议或帮助都将不胜感激。

在Dbcontext类集合OnDelete中

modelBuilder.Entity<Land>()
            .HasOne(l => l.Building)
            .WithMany(b => b.Lands)
            .HasForeignKey(l => l.BuildingId)
            .OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.SetNull);
modelBuilder.Entity()
.HasOne(l=>l.Building)
.带多个(b=>b.Lands)
.HasForeignKey(l=>l.BuildingId)
.OnDelete(Microsoft.EntityFrameworkCore.Metadata.DeleteBehavior.SetNull);

首先,确保FK_PropertyGroups_ResidentityPes_ResidentityPeId允许NULL,如果还没有,那么在删除ResidentityPe时,只需发出更新,在保存更改之前,您可以让每个PropertyGroup将FK的值更新为null…我认为这会起作用…但是您是否正在寻找解决方案如何进行更改或如何允许该行为,因此确保FK允许null,在这种情况下,上一个解决方案就是答案。

事实证明,我已经设置好了所有设置正确地说,我只需要在delete方法中添加Include子句

var residenceType = await _context.ResidenceTypes.Include(p => p.PropertyGroups).FirstOrDefaultAsync(i => i.PropertyGroupName == name);
添加此选项会将相关Id列设置为null,这要感谢那些试图提供帮助的人