EF 7 Valore generato datetime del database

entity-framework entity-framework-core

Domanda

Ho questo modello

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

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

Sto cercando di lasciare che il db generi il valore di CreatedAt e LastEditedAt così nel mio metodo OnModelCreating del mio DbContext ho usato

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

Quando provo ad inserire, ricevo un'eccezione interna in SaveChanges() dicendo

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

Significa che devo assegnare manualmente i valori a queste due colonne?

Risolto facendo diventare LastEditedAt nullable

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

e impostando un valore predefinito SQL su CreatedAt

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

Risposta accettata

È possibile impostare DateTime su Null: DateTime? .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché