c# - 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
。
如果您有一些解决方案可以实现第一个要求,即使第二个要求是不可能的,也请无论如何分享。至少我们需要一些解决方法。谢谢你。
解决方案
试试这个 -
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Item>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("GETUTCDATE()");
}
推荐阅读
- excel - 如何以 4/3/4/3 模式为列着色?
- user-interface - Delphi:EoleSysError 异常
- javascript - Flask:如何使用 ES6 模块?
- go - 在 Go 中定期调用 N 个并发函数的最佳方法是什么?
- jspdf - 是否可以结合 jsPDF 和 Autotable 插件?
- windows-subsystem-for-linux - 在 WSL 版本 2 中,我在哪里可以找到 Windows 文件夹?
- r - string_split,读取文件并将它们存储到不同的列表中
- mysql - MySQL搜索多个表并在一个表中搜索多个列
- c# - C# 中的 SerialPort 无法正确发送扩展 ASCII 字符
- python - 仅将时间戳转换为月份名称