2017-03-24 17 views
1

整数プライマリキーとして1つの列MandantIdを含むテーブルにレコードを追加しようとすると問題が発生します。この列はではなく、の自動インクリメントです。私はレコードを追加しようとすると、私は次のようなエラーメッセージが出ます: を:mandantid「23502列にNULL値が 『』非NULL制約に違反する」Npgsql EntitiyFrameworkはプライマリキーとして整数のみを持つテーブルにレコードを追加できません

私が使用しているもの:

  1. のPostgreSQL 9.6
  2. EntityFramework 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)); それは動作します!

しかし、私は修正クエリを使用したくありません。 0と一度有効な整数、同じエラー

  • は、データベースとEF、同じエラーのすべての依存関係を削除し、一度に、(追加で

    1. を)とEFからのSaveChanges()関数:私はすでに試した何
    2. idという名前の追加の列を、自動インクリメントとして主キーとして追加しました。しかし、私は2つのユニークなキーを持っています。

    これは私のDatabasemodelです:

    [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; } 
    } 
    
  • +0

    この問題もあります。あなたはそれを解決していますか? –

    答えて

    0

    私もこの問題を持っています。 それを解決しました。プライマリキーには、Column属性にはOrderの値を追加し、プライマリキーにはDatabaseGenerated属性を追加する必要があります。

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