Zin*_*nov 7 c# entity-framework-core
我可以获得所有标记为 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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3131 次 |
| 最近记录: |