【问题标题】:EF 7 Database datetime generated valueEF 7 数据库日期时间生成值
【发布时间】: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; }
    }

我试图让数据库生成CreatedAtLastEditedAt 的值,所以在我的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


    【解决方案1】:

    您可以将 DateTime 设置为可为空:DateTime?

    【讨论】:

    • 我将 CreatedAt 默认值设置为 "GETUTCDATE()" 和 LastEditedAt,正如您所说,非常感谢
    • 乐于助人!你能告诉我们固定的代码吗?只是好奇。 :)
    • 不知道HasDefaultValueSql(),很高兴知道,tks。
    【解决方案2】:

    我已使用以下解决方案来设置创建和修改日期字段的值:

    modelBuilder.Entity<ExampleEntity>(c =>
    {
       c.Property(p => p.CreatedDate).HasDefaultValueSql("GETDATE()").ValueGeneratedOnAdd();
       c.Property(p => p.UpdatedDate).HasDefaultValueSql("GETDATE()").ValueGeneratedOnAddOrUpdate();
    });
    

    您应该在 EntityFrameworkCore github 存储库中查看此问题:

    Issue3955

    Issue4501

    在这些链接中显示了解决创建/更新日期字段生成问题的几种方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      相关资源
      最近更新 更多