今天,我已经将我的项目更新为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 });
}
答案 0 :(得分:0)
您正在填充fkt,但
_context.FKTables.AddRange(fkts); <-- this is fkts.
我相信您在这里有逻辑上的错误。
答案 1 :(得分:0)
我将外键映射为[ForeignKey("ItemCode")]
。现在,将其更改为[ForeignKey("itemCode")]
。
它现在正在工作。我讨厌为什么它可以在Core 2.1的早期版本中工作。