首页 > 解决方案 > Oracle EF Core - 如何配置自动生成的日期时间列?

问题描述

首先,这只是一个简单的功能,至少 EF Core for SQL Server 支持,但对于 Oracle(由 Oracle 实现的提供程序),我不太确定它是否受支持。

只是我有一个这样的实体类:

public class Item {
    public int Id {get;set;}
    public DateTime CreatedDateUtc {get;set;}
}

问题是如何配置 EF 核心以在CreatedDateUtc每次插入时自动生成数据库的日期,而不必在客户端设置该值?

这是我尝试过的:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   modelBuilder.Entity<Item>()
               .Property(e => e.CreatedDateUtc)
               .ValueGeneratedOnAdd();                 
}

但是运行之后add-migration,生成的类就是这样的空:

protected override void Up(MigrationBuilder migrationBuilder)
{

}

protected override void Down(MigrationBuilder migrationBuilder)
{

}

所以实际上它对该配置没有任何作用(不支持?)。同样第一件事是生成一个日期时间值,第二件事是生成一个UTC日期时间值。我相信第一个要求的可行性,而第二个要求至少对于 Oracle EF Core 似乎是不可行的?(nuget 名称:)Oracle.EntityFrameworkCore

如果您有一些解决方案可以实现第一个要求,即使第二个要求是不可能的,也请无论如何分享。至少我们需要一些解决方法。谢谢你。

标签: c#oracleentity-framework-core

解决方案


试试这个 -

protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
          modelBuilder.Entity<Item>()
               .Property(b => b.CreatedDateUtc)
               .HasDefaultValueSql("GETUTCDATE()");
    }

推荐阅读