【发布时间】:2017-11-16 16:53:33
【问题描述】:
我有这个模型
public class Comment
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CommentId { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime LastEditedAt { get; set; }
}
我试图让数据库生成CreatedAt 和LastEditedAt 的值,所以在我的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."}
这是否意味着我必须手动为这两列赋值?
通过将LastEditedAt 设为可空来修复
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();
});
【问题讨论】:
标签: entity-framework entity-framework-core