C# 删除子记录EF Core时如何将外键值设置为Null
我对Entity Framework非常陌生,我有一个可以从SQL Server数据库中删除记录的API,我有子表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
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,这要感谢那些试图提供帮助的人