gpt4 book ai didi

c# - 如何与包含导航属性的 Entity Framework Core 进行级联软删除?

转载 作者:行者123 更新时间:2023-11-30 16:41:21 31 4
gpt4 key购买 nike

我可以获得所有标记为 IsDeleted = true 的实体,应用查询过滤器,其中 IsDeleted 是我的实体的一个字段。

现在,我的问题非常简单,当我软删除具有我也想标记为 IsDeleted 的导航属性的实体时,如何与 Entity Framework Core 进行级联软删除。

最佳答案

我使用以下代码来完成级联删除。感谢@Zinov 和 ajcvickers。基于https://github.com/aspnet/EntityFrameworkCore/issues/11240

//..
case EntityState.Deleted:
entry.State = EntityState.Modified;
entry.CurrentValues["IsDeleted"] = true;
foreach (var navigationEntry in entry.Navigations.Where(n => !n.Metadata.IsDependentToPrincipal()))
{
if (navigationEntry is CollectionEntry collectionEntry)
{
foreach (var dependentEntry in collectionEntry.CurrentValue)
{
HandleDependent(Entry(dependentEntry));
}
}
else
{
var dependentEntry = navigationEntry.CurrentValue;
if (dependentEntry != null)
{
HandleDependent(Entry(dependentEntry));
}
}
}
break;
}

private void HandleDependent(EntityEntry entry)
{
entry.CurrentValues["IsDeleted"] = true;
}

关于c# - 如何与包含导航属性的 Entity Framework Core 进行级联软删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49242151/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com