值出现在非空约束列中,但Postgres抛出异常

时间:2019-01-02 15:30:17

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

今天,我已经将我的项目更新为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 });
        }

2 个答案:

答案 0 :(得分:0)

您正在填充fkt,但

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

我相信您在这里有逻辑上的错误。

答案 1 :(得分:0)

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

它现在正在工作。我讨厌为什么它可以在Core 2.1的早期版本中工作。