ASP.NET 写数据库错误

2016-05-07 23:24:41 +08:00
 CBBing

http://ww4.sinaimg.cn/mw690/e41b183dgw1f3n8k5ykt4j20s70d9q8o.jpg http://ww1.sinaimg.cn/mw690/e41b183dgw1f3n8k6ewk6j20ms0ah0x0.jpg http://ww2.sinaimg.cn/mw690/e41b183dgw1f3n8k82nc6j20fm0593zd.jpg http://ww4.sinaimg.cn/mw690/e41b183dgw1f3n8k85vfhj20e205i405.jpg

3424 次点击
所在节点    .NET
33 条回复
CBBing
2016-05-08 15:29:52 +08:00
@zkd8907 恩,我手动设置主键为 22,但还是一直不行,后来设置了主键自动生成就行了,按理说手动设置主键只要不冲突也可以吧?
CBBing
2016-05-08 15:30:30 +08:00
@Choyes 恩,我现在已经设置了主键自动生成
zkd8907
2016-05-08 15:35:08 +08:00
@CBBing 之前有没有过 ID 是 22 的记录?
dong3580
2016-05-08 15:36:47 +08:00
@CBBing
1.设不设置主键无关紧要;
2.主键不能为空;
3.不能有相同的主键;
jame
2016-05-08 17:37:21 +08:00
捕捉一下异常

if (ex is DbEntityValidationException)
message = ((DbEntityValidationException)ex).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage;
CBBing
2016-05-08 18:43:50 +08:00
@zkd8907 没有,只有一条 Id=1 的记录
CBBing
2016-05-08 18:44:55 +08:00
@dong3580 设了 Id 为主键且只有一个,主键不为空,手动赋值为 22
CBBing
2016-05-08 18:46:30 +08:00
@jame 我的理解是异常在前面的图里就有,还是说有些异常需要手动捕捉?
CBBing
2016-05-08 18:52:37 +08:00
jame
2016-05-08 19:41:44 +08:00
Linq 不显示详细信息,需要使用如下代码才能显示明细。
try {
db.saveChanges();
}catch(Exception ex){
if (ex is DbEntityValidationException)
message = ((DbEntityValidationException)ex).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage;
}
CBBing
2016-05-09 13:24:06 +08:00
@jame 谢谢,我试试看
CBBing
2016-05-09 13:33:47 +08:00
@jame 我出错时的数据表名 Comments,model 的类是 Comment,但表中还有一个属性名为 comment,我把主键设置为自增之后,还是不能插入数据库,但是我把名为 comment 的属性改为 review 之后,一切都正常了。而且刚刚我测试现在的代码也没有报错,我在想是不是属性名和 model 类名有冲突?
jame
2016-05-09 13:47:48 +08:00
把 EF 中的相关表删掉,重新拉取。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/277052

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX