asp.net mysql自动编号_asp.net ef mysql 生成插入语句自增长Id为0,报错:存储区更新、插入或删除语句影响到了意外的行数(0).........

环境:asp.net ef mysql Code First

问题:两张差不多的表,添加数据时其中一张表报错:存储区更新、插入或删除语句影响到了意外的行数(0)......,通过打印生成的Sql观察到,问题应该是出在自增长Id上。

添加成功表:

6a7e23613dcf161fbf113a5976fbe2e6.png

测试添加:

d31003babe9975fb1eb72e83fd56e4df.png

添加失败表:

e1ba485f8c45dd25fc00849fa4e35e63.png

测试添加:

43908d904a5b45ef4502c10fb1a18569.png

手动给Id赋一个正常的值是能够添加成功的

使用modelBuilder.Entity()

.Property(e => e.id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

注解Id字段也能正常添加。但是以往都不需要去这么做的.

Id也都是自增长列,不知道两张表有啥差别,导致ef生成的Sql语句出现Id为0的情况。

已解决:

我去掉了数据库时间的默认值:CURRENT_TIMESTAMP

表中CreateTime 使用了默认值,CURRENT_TIMESTAMP

而ef生成的实体中就会出现如下注解

f24a62c8a10b6dd993bf891d2eb6466a.png

该注解像是能影响主键生成的sql,一但加到CreateTime上面,打印出来的添加sql语句上就会出现Id=0,然后就会失败

f06500773b4d7fc2e6c1d2720fd26310.png

去掉注解后,打印的添加Sql上的Id=0就不见了,就能成功添加了,也不晓得啥原因,

4c71e3e4cc9f5fcd9e8453664c36e489.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值