33 replies    2016-05-09 13:47:48 +08:00
CBBing
    1
CBBing  
OP
   May 7, 2016
CBBing
    2
CBBing  
OP
   May 7, 2016
CBBing
    3
CBBing  
OP
   May 7, 2016
CBBing
    4
CBBing  
OP
   May 7, 2016
haitang
    5
haitang  
   May 8, 2016 via Android   ❤️ 1
查看异常的详细信息; id 22 是唯一的?
z67nnciQnb7r8bLf
    6
z67nnciQnb7r8bLf  
   May 8, 2016   ❤️ 1
看看那个异常的 innerexception
CBBing
    7
CBBing  
OP
   May 8, 2016
@haitang 目前数据库只有一条数据
CBBing
    8
CBBing  
OP
   May 8, 2016
CBBing
    9
CBBing  
OP
   May 8, 2016
@C0dEr 显示 ID 为 null ,但那个窗口 Id=22 说明有值啊
heaton_nobu
    10
heaton_nobu  
   May 8, 2016   ❤️ 1
看看生成的语句是什么
CBBing
    11
CBBing  
OP
   May 8, 2016
heaton_nobu
    12
heaton_nobu  
   May 8, 2016   ❤️ 1
你生成的语句里面没有 Id 这列,看看是不是没设主键
vghdjgh
    13
vghdjgh  
   May 8, 2016   ❤️ 1
如果是 EF 的 Code First ,你可以贴下模型是怎么映射的。
CBBing
    14
CBBing  
OP
   May 8, 2016
@heaton_nobu
@vghdjgh 我设置了主键,但是是手动赋值的,现在改为自增主键,就可以了,请问是什么原因
heaton_nobu
    15
heaton_nobu  
   May 8, 2016 via iPhone   ❤️ 1
@CBBing 有可能模型与数据库不一致,再同步看看呢
dong3580
    16
dong3580  
   May 8, 2016 via Android   ❤️ 1
@CBBing
id 为 null?还设置的主键。
检查一下传值那部分,是不是哪儿没穿对
Choyes
    17
Choyes  
   May 8, 2016 via Android   ❤️ 1
數據庫已經有了一條就不能再添加相同的主鍵值,你試著把那條刪掉然後再賦值應該就可以的,但是不建議給主鍵賦固定的值,要么隨機生成,要么自動增長
CBBing
    18
CBBing  
OP
   May 8, 2016
@heaton_nobu 模型与数据库是一致的,现在写数据到数据库已经成功了
zkd8907
    19
zkd8907  
   May 8, 2016   ❤️ 1
主键不是自增的时候,是需要你在 INSERT 的时候主动赋值的,要不 SQL Server 不知道 ID 是多少。
CBBing
    20
CBBing  
OP
   May 8, 2016
@dong3580 可能是因为我之前没有设置主键自动生成,但那时候我数据库就一条数据,主键也不是 22
CBBing
    21
CBBing  
OP
   May 8, 2016
@zkd8907 恩,我手动设置主键为 22,但还是一直不行,后来设置了主键自动生成就行了,按理说手动设置主键只要不冲突也可以吧?
CBBing
    22
CBBing  
OP
   May 8, 2016
@Choyes 恩,我现在已经设置了主键自动生成
zkd8907
    23
zkd8907  
   May 8, 2016   ❤️ 1
@CBBing 之前有没有过 ID 是 22 的记录?
dong3580
    24
dong3580  
   May 8, 2016   ❤️ 1
@CBBing
1.设不设置主键无关紧要;
2.主键不能为空;
3.不能有相同的主键;
jame
    25
jame  
   May 8, 2016   ❤️ 1
捕捉一下异常

if (ex is DbEntityValidationException)
message = ((DbEntityValidationException)ex).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage;
CBBing
    26
CBBing  
OP
   May 8, 2016
@zkd8907 没有,只有一条 Id=1 的记录
CBBing
    27
CBBing  
OP
   May 8, 2016
@dong3580 设了 Id 为主键且只有一个,主键不为空,手动赋值为 22
CBBing
    28
CBBing  
OP
   May 8, 2016
@jame 我的理解是异常在前面的图里就有,还是说有些异常需要手动捕捉?
CBBing
    29
CBBing  
OP
   May 8, 2016
jame
    30
jame  
   May 8, 2016   ❤️ 1
Linq 不显示详细信息,需要使用如下代码才能显示明细。
try {
db.saveChanges();
}catch(Exception ex){
if (ex is DbEntityValidationException)
message = ((DbEntityValidationException)ex).EntityValidationErrors.First().ValidationErrors.First().ErrorMessage;
}
CBBing
    31
CBBing  
OP
   May 9, 2016
@jame 谢谢,我试试看
CBBing
    32
CBBing  
OP
   May 9, 2016
@jame 我出错时的数据表名 Comments,model 的类是 Comment,但表中还有一个属性名为 comment,我把主键设置为自增之后,还是不能插入数据库,但是我把名为 comment 的属性改为 review 之后,一切都正常了。而且刚刚我测试现在的代码也没有报错,我在想是不是属性名和 model 类名有冲突?
jame
    33
jame  
   May 9, 2016   ❤️ 1
把 EF 中的相关表删掉,重新拉取。
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2699 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 60ms · UTC 05:03 · PVG 13:03 · LAX 22:03 · JFK 01:03
♥ Do have faith in what you're doing.