Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Npgsql实体框架可以';t将记录添加到仅以整数作为主键的表中_C#_Postgresql_Entity Framework_Npgsql - Fatal编程技术网

C# Npgsql实体框架可以';t将记录添加到仅以整数作为主键的表中

C# Npgsql实体框架可以';t将记录添加到仅以整数作为主键的表中,c#,postgresql,entity-framework,npgsql,C#,Postgresql,Entity Framework,Npgsql,当我试图将记录添加到只包含一列mandandi作为整型主键的表中时,遇到了一个问题。此列不是自动递增的。当我尝试添加记录时,会收到以下错误消息: 23502:列“mandandi”中的null值违反了非null约束 我使用的是: PostgreSQL 9.6 实体框架6.1.3 实体框架6.Npgsql 3.1.1 Npgsql 3.1.2 如果使用插入查询,如: _context.Database.ExecuteSqlCommand(string.Format(“INSERT-INTO-pub

当我试图将记录添加到只包含一列mandandi作为整型主键的表中时,遇到了一个问题。此列不是自动递增的。当我尝试添加记录时,会收到以下错误消息: 23502:列“mandandi”中的null值违反了非null约束

我使用的是:

  • PostgreSQL 9.6
  • 实体框架6.1.3
  • 实体框架6.Npgsql 3.1.1
  • Npgsql 3.1.2
  • 如果使用插入查询,如: _context.Database.ExecuteSqlCommand(string.Format(“INSERT-INTO-public.mandant(mandanti)value({0});”),mandanti)); 它起作用了

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

  • 对于EF中的Add()和SaveChanges()函数,一次使用0,一次使用有效整数,都会出现相同的错误
  • 删除了对数据库和EF的所有依赖项,出现相同错误
  • 使用插入脚本,这很有效
  • 添加了一个名为id的附加列作为主键作为自动增量,这很有效。但我有两把独特的钥匙
  • 这是我的数据库模型:

    [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; }
    }
    
    类LicenseContext:DbContext
    {
    公共许可证上下文()
    :base(“MandantContext”)
    {
    }
    公共虚拟数据库集命令{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; }
    }
    
    我也有这个问题。 并解决了这个问题。您应该将
    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; }
    }
    

    我也有这个问题。你解决了吗?我也有这个问题。你解决了吗?