Base de datos de EF 7 valor generado por fecha

entity-framework entity-framework-core

Pregunta

Tengo este modelo

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

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

Estoy intentando que la db genere el valor de CreatedAt y LastEditedAt así que en mi método OnModelCreating de mi DbContext usé

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

Al intentar insertar, obtengo una excepción interna en SaveChanges() dice

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

¿Eso significa que tengo que asignar valores a esas dos columnas manualmente?

Se LastEditedAt haciendo que LastEditedAt anulable

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

y establecer un valor predeterminado de SQL para CreatedAt

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

Respuesta aceptada

Puede establecer DateTime en nullable: DateTime? .



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué