小编典典

通过实体框架插入当前数据库日期时间

sql

我们希望将当前日期时间放入数据库列中。

我们有一个Web场,Web服务器上的时间可以变化,因此我们需要在数据库服务器上使用datetime。

我们有一个带有Not Nulldatetime列的数据库。此列的默认日期时间为当前时间。

当我们使用不包含datetime列的SQL语句插入数据时,这种方法可以很好地工作。

从实体框架:

  • 如果我们将datetime定义为not null,则datetime设置为低日期,并将低日期插入数据库中。
  • 如果将datetime定义为null,则插入时会出现一个异常,即值不能为null。

如果插入值为低日期,我们可以使用数据库触发器将日期时间更改为当前日期时间来解决此问题。

有谁有更好的解决方案?


阅读 243

收藏
2021-04-28

共1个答案

小编典典

由于该列具有数据库设置的默认值,因此您可以简单地将datetime列标记为已计算:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
property DateTime Date { get; set; }

或流利的制图

this.Property(t => t.Date)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);

EntityTypeConfiguration课堂上,或

modelBuilder.Entity<MyClass>().Property(t => t.Date)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);

OnModelCreating覆盖。

这将导致EntityFramework在每次读取,插入或更新记录时读取该列的值,但是永远不会设置它。

2021-04-28