Значение присутствует в ненулевом столбце ограничения, но Postgres выдает исключение - PullRequest
0 голосов
/ 02 января 2019

Сегодня я обновил свой проект до DotNetCore 2.2.С тех пор я получаю ошибку столбца ограничения не-NULL от Npgsql.PostgresException, даже если значения присутствуют.

Npgsql.PostgresException: 23502: нулевое значение в столбце "ItemCode" нарушает ограничение не-NULL

        [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 голосов
/ 02 января 2019

Я сопоставил внешний ключ как [ForeignKey("ItemCode")].Теперь измените это как [ForeignKey("itemCode")].

. Теперь оно работает.Я удивляюсь, почему это работало в более ранней версии Core 2.1.

0 голосов
/ 02 января 2019

вы заполняете фкт но

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

Я считаю, что у вас есть логическая ошибка здесь.

...