添加编辑 时 数据不可重复验证

  • 当在添加的时候,要判断某一个字段值是唯一的,这个很简单,只需在添加前判断数据库中是否已存在此数据值

  • 但是在编辑的时候就遇到了问题,如果按照添加时的验证,当没有改变要编辑的数据时,此时是无法保存的,因为数据库里已经有了一个了,这是不合理的,这就导致如果只改其他可以重复的数据那么此时也无法修改。

    解决方式:因为编辑的时候肯定是有 Id 的数据的 ,因此判断方式为:

    判断 满足此 Id 的数据值后 如果还有 满足此字段的值(不能重复),此时的数量 = 2,那么此时修改后的数据数据在数据库中已经存在了

          可参考:下面代码是验证:name 和 superiorid 两个字段是不可重复的验证

    if (id == 0)
            {
                return _dc.GetAll().Where(p => p.Name == name && p.SuperiorId == superiorid).ToList().Any(); //添加验证
            }
            else
            {
                return _dc.GetAll().Where(p => p.Id == id || (p.Name == name && p.SuperiorId == superiorid)).ToList().Count() == 2;  
            }  

 

 其实上面的方法仔细思考一下其实还可以优化,既然满足 id 的数据和满足 p.Name == name && p.SuperiorId == superiorid为 2个,那么反过来思考,当满足 不为id且 p.Name == name && p.SuperiorId == superiorid,这种方式即使是添加,也可以采用这个方法

满足了Id!=0 后 如果有 p.Name == name && p.SuperiorId == superiorid 则重复了

 return _dc.GetAll().Any(p => p.Id != id && (p.Name == name && p.SuperiorId == superiorid));  

 

转载于:https://www.cnblogs.com/wang-min/p/10445607.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值