You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取EF Core集合的DeleteBehavior:替代反射的更佳方案

获取EntityEntry集合关联的DeleteBehavior最优方案

你完全不需要用反射来获取DeleteBehavior,EF Core本身提供了公开API直接访问,没必要依赖私有属性。

修正后的代码示例:

var entry = context.Entry(this);
foreach (var collectionEntry in entry.Collections)
{
    var navigation = collectionEntry.Metadata;
    var foreignKey = navigation.ForeignKey;
    if (foreignKey != null)
    {
        DeleteBehavior deleteBehavior = foreignKey.DeleteBehavior;
        // 在这里使用获取到的DeleteBehavior
    }
}

关键说明:

  • 无需将Metadata强转为RuntimeNavigation,INavigation接口本身就暴露了ForeignKey属性,直接调用即可
  • ForeignKey.DeleteBehavior是EF Core官方设计的公共属性,主流版本(3.x及以上)都支持,这种方式比反射更稳定,不会因为EF Core内部实现变更导致代码失效

内容的提问来源于stack exchange,提问作者Gibrid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:23:10