J'ai ce modèle
public class Comment
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CommentId { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime LastEditedAt { get; set; }
}
J'essaie de laisser la base de données générer la valeur de CreatedAt
et LastEditedAt
donc dans ma méthode OnModelCreating
de mon DbContext
j'ai utilisé
modelBuilder.Entity<Comment>(c =>
{
c.Property(p => p.CreatedAt).ValueGeneratedOnAdd();
c.Property(p => p.LastEditedAt).ValueGeneratedOnAddOrUpdate();
});
Lors de la tentative d’insertion, une exception interne SaveChanges()
dans SaveChanges()
disant:
{"Cannot insert the value NULL into column 'CreatedAt', table 'WX.dbo.Comment'; column does not allow nulls. INSERT fails."}
Est-ce que cela signifie que je dois attribuer des valeurs à ces deux colonnes manuellement?
Fixé en rendant LastEditedAt
public DateTime CreatedAt { get; set; }
public DateTime? LastEditedAt { get; set; }
et définition d'une valeur par défaut SQL sur CreatedAt
modelBuilder.Entity<Comment>(c =>
{
c.Property(p => p.CreatedAt).HasDefaultValueSql("GETUTCDATE()");
c.Property(p => p.LastEditedAt).ValueGeneratedOnAddOrUpdate();
});