环境:asp.net ef mysql Code First
问题:两张差不多的表,添加数据时其中一张表报错:存储区更新、插入或删除语句影响到了意外的行数(0)......,通过打印生成的Sql观察到,问题应该是出在自增长Id上。
添加成功表:
测试添加:
添加失败表:
测试添加:
手动给Id赋一个正常的值是能够添加成功的
使用modelBuilder.Entity()
.Property(e => e.id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
注解Id字段也能正常添加。但是以往都不需要去这么做的.
Id也都是自增长列,不知道两张表有啥差别,导致ef生成的Sql语句出现Id为0的情况。
已解决:
我去掉了数据库时间的默认值:CURRENT_TIMESTAMP
表中CreateTime 使用了默认值,CURRENT_TIMESTAMP
而ef生成的实体中就会出现如下注解
该注解像是能影响主键生成的sql,一但加到CreateTime上面,打印出来的添加sql语句上就会出现Id=0,然后就会失败
去掉注解后,打印的添加Sql上的Id=0就不见了,就能成功添加了,也不晓得啥原因,