□ 背景
往数据库添加数据,前端验证通过的情况下,提交报错,程序停在了SaveChanges()这行,并报如上错误。
□ 分析
猜想是提交的领域模型不符合数据库要求,但不知道具体哪里出错。网上查资料,有人发现这是"某些字段为空"而引起的错误。每个人面对的场景不一样,打断点调试,发现有一个属性的长度超出了数据库的要求。
出错的语句:
userInfo.LoginPwd = EncryptHelper.GetMd5(userInfo.LoginPwd).Substring(10);
本来是想对加密后的字符串截取前10位,却变成了从第10位开始截取,导致超出了数据库字段长度的上限。
修改如下:
userInfo.LoginPwd = EncryptHelper.GetMd5(userInfo.LoginPwd).Substring(0, 10);