java递归次数太多栈溢出_请问这个方法为什么调用次数一多,就报栈溢出的异常?...

为了验证实体对象的属性值是否合法,其实就是验证各字段的MaxLength,Range,Required等属性标签,我在Model父类中写了这个方法,代码如下,

///

///验证实体的数据是否符合要求///

/// 被验证的实体

/// 符合返回true

public static bool IsValid(thisParent p)

{try{var context = new ValidationContext(p, null, null);var results = new List();

TypeDescriptor.AddProviderTransparent(newAssociatedMetadataTypeTypeDescriptionProvider(p.GetType()), p.GetType());bool isValid = Validator.TryValidateObject(p, context, results, true);returnisValid;

}finally{

GC.Collect();

}

}

我还特意加了个finally,在每次调用完成都强制垃圾回收..

可是调用这个方法次数一多,就报下边这个异常了,大约在9030到9050次之间就会出这个异常..

8EqdK91NtS8AAAAASUVORK5CYII=

我的测试代码如下:

Item_Prop是Parent的子类.

gw7dv8Hakd00ZR5bYJXo2kd52l1BRl92vYztx6P+RC4zyyGoH9lNa9ZY5SRuw07kXWoV2U23u8P55tda8XzDvS0LgcDWjuymu91hc3VzdvH+7OL95uqGe1sALCjIerc7XG8P19sDAgMwotIFADSOShcA0DiKdBv7w7cAMERJzsgMYAolOaMxgCmU5IzGAKZQkjMaA5hCSc5oDGAKpfojMwAvSnJGYABTKMkZjQFMoSRnNAYwhZKc0RjAFEpyRmMAUyjJGY0BTKFIN34TDGDjf7EvcGnYlDgkAAAAAElFTkSuQmCC

你可能会问,干嘛要调用这么多次...

好吧,其实我在BaseDAO里写了一个TransInsert(List list){}的方法,

这个方法用于向数据库中批量插入一批实体数据.

在foreach   list时,对每个item进行IsValid()验证...于是,list项一多就出现上边的异常了..

同一个list中,item超9030之后就会出现这个异常了,

还有一种情况是,我有多个list..

list listA

listlistB

listlistN

即使每个list中的项不到9000,只有100到500项,分别将这多个(N个)list插入时,也会出现那个异常...

我总结了一下,就是IsValid()方法调用次数一多,就会报那个异常...

请问这个方法为什么会导致这个异常?怎么解决?谢谢!

开始我还以为是插入到数据库中的时候出了问题呢..后来将这句注释掉之后就正常了.

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

weixin_39578867

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值