gpt4 book ai didi

c# - Npgsql EntitiyFramework 无法将记录添加到只有一个整数作为主键的表中

转载 作者:行者123 更新时间:2023-11-29 13:49:45 25 4
gpt4 key购买 nike

当我尝试将 Record 添加到仅包含一列 MandantId 作为整数主键的表时,我遇到了问题。此列自动递增。当我尝试添加记录时,出现以下错误消息:“23502:“mandantid”列中的空值违反了非空约束”

我用的是什么:

  1. PostgreSQL 9.6
  2. Entity Framework 6.1.3
  3. EntityFramework6.Npgsql 3.1.1
  4. Npgsql 3.1.2

如果我使用 INSERT 查询,例如:_context.Database.ExecuteSqlCommand(string.Format("INSERT INTO public.mandant (mandantid) VALUES ({0});"), MandantId));有用!

但我不想使用修复查询。我已经尝试过的:

  1. 使用 EF 的 Add() 和 SaveChanges() 函数,一次为 0,一次为有效整数,同样的错误
  2. 删除了对数据库和 EF 的所有依赖,同样的错误
  3. 使用有效的插入脚本
  4. 添加了一个名为 id 的附加列作为主键作为自动增量,这很有效。但是我有两个唯一的 key 。

这是我的数据库模型:

[Table("mandant", Schema = "public")]
public class MandantEdm
{
public MandantEdm()
{
}

[Key]
[Column("mandantid")]
public int MandantId { get; set; }
}

这是上下文类:

class LicenseContext : DbContext
{
public LicenseContext()
: base("MandantContext")
{
}

public virtual DbSet<MandantEdm> Mandants { get; set; }
}

最佳答案

我也遇到了这个问题。并解决了它。您应该将 Order 值添加到您的主键的 Column 属性和 DatabaseGenerated 属性。

[Table("mandant", Schema = "public")]
public class MandantEdm
{
public MandantEdm()
{
}

[Key]
[Column("mandantid", Order = 1)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int MandantId { get; set; }
}

关于c# - Npgsql EntitiyFramework 无法将记录添加到只有一个整数作为主键的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42993666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com