EF 7データベース日時生成値

entity-framework entity-framework-core

質問

私はこのモデルを持っている

 public class Comment
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int CommentId { get; set; }

        public DateTime CreatedAt { get; set; }
        public DateTime LastEditedAt { get; set; }
    }

私はDBはの値を生成できるようにしようとしているCreatedAtLastEditedAt私にしてOnModelCreating私の方法DbContext私が使用しました

modelBuilder.Entity<Comment>(c =>
            {
                c.Property(p => p.CreatedAt).ValueGeneratedOnAdd();
                c.Property(p => p.LastEditedAt).ValueGeneratedOnAddOrUpdate();
            });

挿入しようとすると、私はSaveChanges()内の例外を取得する

{"Cannot insert the value NULL into column 'CreatedAt', table 'WX.dbo.Comment'; column does not allow nulls. INSERT fails."}

つまり、これら2つの列に値を手動で割り当てる必要がありますか?

LastEditedAt nullにすることで修正されました

 public DateTime  CreatedAt { get; set; }
 public DateTime? LastEditedAt { get; set; }

SQLのデフォルト値をCreatedAt設定する

  modelBuilder.Entity<Comment>(c =>
            {
                c.Property(p => p.CreatedAt).HasDefaultValueSql("GETUTCDATE()");
                c.Property(p => p.LastEditedAt).ValueGeneratedOnAddOrUpdate();
            });

受け入れられた回答

DateTimeをnullableに設定することができます: DateTime?



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ