0

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

2 回答 2

0

你正在填写 fkt 但是

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

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

于 2019-01-02T15:35:11.630 回答
0

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

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

于 2019-01-02T16:37:40.600 回答