1
CBBing OP |
2
CBBing OP |
3
CBBing OP |
4
CBBing OP |
5
haitang 2016-05-08 03:08:47 +08:00 via Android 1
查看异常的详细信息; id 22 是唯一的?
|
6
C0dEr 2016-05-08 08:50:33 +08:00 1
看看那个异常的 innerexception
|
10
heaton_nobu 2016-05-08 09:39:17 +08:00 1
看看生成的语句是什么
|
11
CBBing OP |
12
heaton_nobu 2016-05-08 09:50:51 +08:00 1
你生成的语句里面没有 Id 这列,看看是不是没设主键
|
13
vghdjgh 2016-05-08 09:52:24 +08:00 1
如果是 EF 的 Code First ,你可以贴下模型是怎么映射的。
|
14
CBBing OP |
15
heaton_nobu 2016-05-08 10:47:38 +08:00 via iPhone 1
@CBBing 有可能模型与数据库不一致,再同步看看呢
|
17
Choyes 2016-05-08 11:36:00 +08:00 via Android 1
數據庫已經有了一條就不能再添加相同的主鍵值,你試著把那條刪掉然後再賦值應該就可以的,但是不建議給主鍵賦固定的值,要么隨機生成,要么自動增長
|
18
CBBing OP @heaton_nobu 模型与数据库是一致的,现在写数据到数据库已经成功了
|
19
zkd8907 2016-05-08 15:28:22 +08:00 1
主键不是自增的时候,是需要你在 INSERT 的时候主动赋值的,要不 SQL Server 不知道 ID 是多少。
|
21
CBBing OP @zkd8907 恩,我手动设置主键为 22,但还是一直不行,后来设置了主键自动生成就行了,按理说手动设置主键只要不冲突也可以吧?
|
25
jame 2016-05-08 17:37:21 +08:00 1
捕捉一下异常
if (ex is DbEntityValidationException) message = ((DbEntityValidationException)ex).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage; |
30
jame 2016-05-08 19:41:44 +08:00 1
Linq 不显示详细信息,需要使用如下代码才能显示明细。
try { db.saveChanges(); }catch(Exception ex){ if (ex is DbEntityValidationException) message = ((DbEntityValidationException)ex).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage; } |
32
CBBing OP @jame 我出错时的数据表名 Comments,model 的类是 Comment,但表中还有一个属性名为 comment,我把主键设置为自增之后,还是不能插入数据库,但是我把名为 comment 的属性改为 review 之后,一切都正常了。而且刚刚我测试现在的代码也没有报错,我在想是不是属性名和 model 类名有冲突?
|
33
jame 2016-05-09 13:47:48 +08:00 1
把 EF 中的相关表删掉,重新拉取。
|