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();
});