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

Shi*_*iji 3 c# sql db2 datetime entity-framework-5

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

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

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

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

从实体框架:

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

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

有谁有更好的解决方案?

Ger*_*old 7

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

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
property DateTime Date { get; set; }
Run Code Online (Sandbox Code Playgroud)

或流利的绘图

this.Property(t => t.Date)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
Run Code Online (Sandbox Code Playgroud)

EntityTypeConfiguration课堂上,或

modelBuilder.Entity<MyClass>().Property(t => t.Date)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
Run Code Online (Sandbox Code Playgroud)

OnModelCreating覆盖。

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