【问题标题】:Value present in not-null constraint column but Postgres throws Exception非空约束列中存在值但 Postgres 抛出异常
【发布时间】:2019-01-02 15:30:16
【问题描述】:

今天我已将我的项目更新为 DotNetCore 2.2。从那时起,我收到来自 Npgsql.PostgresException 的非空约束列错误,即使值存在。

Npgsql.PostgresException:23502:“ItemCode”列中的空值 违反非空约束

        [HttpPost]
        public async Task<IActionResult> PostItem([FromBody] JObject data)
        {
            PKTable pkt = JsonConvert.DeserializeObject<PKTable>(data["pkd"].ToString());
            List<FKTable> fkts = JsonConvert.DeserializeObject<List<FKTable>>(data["fkd"].ToString());

            pkt.itemCode = "ABCD"; // Primary Key Column
            _context.PKTables.Add(pkt);
            try
            {
                if (await _context.SaveChangesAsync() > 0) // PKTable
                {
                    fkt.ForEach(u => { u.itemCode = item.itemCode; }); // Data present here in debug
                    _context.FKTables.AddRange(fkts);  // Data present here in debug
                    await _context.SaveChangesAsync(); // Throws error.
                }
            }
            catch (DbUpdateException ex)
            { throw; }

            return Ok(new { r = item.itemCode });
        }

【问题讨论】:

    标签: c# asp.net-core-2.2 postgresql-11


    【解决方案1】:

    你正在填写 fkt 但是

    _context.FKTables.AddRange(fkts); <-- this is fkts.
    

    我相信你在这里有逻辑错误。

    【讨论】:

    • 部署的 API 按预期工作。我们还没有更新这个控制器,更新到 v2.2
    【解决方案2】:

    我将外键映射为[ForeignKey("ItemCode")]。现在,把它改成[ForeignKey("itemCode")]

    它现在正在工作。我想知道为什么它在 Core 2.1 的早期版本中有效。

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 2019-10-16
      • 1970-01-01
      相关资源
      最近更新 更多