在 EF6 中使用时态表 - PostgreSQL

Posted

技术标签:

【中文标题】在 EF6 中使用时态表 - PostgreSQL【英文标题】:Using temporal tables with EF6 - PostgreSQL 【发布时间】:2022-01-12 03:31:33 【问题描述】:

我将 PostgreSQL 用作我的 EF Core 6 项目的关系数据库,但在运行迁移后,我无法弄清楚如何让时态表与 PostgreSQL 一起使用。如果我使用 SQL Server,它可以正常工作,但我想让它在 PostgreSQL 中工作。

我用于 EFCore 的提供程序: https://www.npgsql.org/efcore/

我按照本指南了解 EF Core 6 的时态表 https://devblogs.microsoft.com/dotnet/prime-your-flux-capacitor-sql-server-temporal-tables-in-ef-core-6-0/

所有表都已创建,但临时表/系统版本未创建。

代码:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) => optionsBuilder.UseNpgsql("Host=my_host;Database=my_db;Username=my_user;Password=my_pw");

使用模型构建器的时态表

 modelBuilder.Entity<Car>().ToTable("Car", c => c.IsTemporal());

有什么我忘记了吗?它看起来也不像是在迁移/模型快照本身中创建的临时表

【问题讨论】:

PostgreSQL 有临时表吗? @TheBatman 是的,我的意思是 Postgre 应该支持临时表? 【参考方案1】:

我认为 PostgreSQL 不支持开箱即用的临时表,但可以使用扩展启用该功能,这可能允许您使用 EF Core 创建表。

扩展代码可以在这里找到: https://github.com/arkhipov/temporal_tables

【讨论】:

由 EF 提供者来支持第 3 方扩展,而 AFAIK NpgSQL 不这样做

以上是关于在 EF6 中使用时态表 - PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章

实体框架不使用时态表

ValidFrom 可以在 UDF 中使用,但 ValidTo - 不是吗? (时态表中的计算列)

如何将系统版本化的时态表与实体框架一起使用?

如何使用 JPA 实现时态表?

1.19.5.4.流上的Join常规Join时间区间Join时态表Join基于处理时间的时态Join时态表函数Join用法

FlinkSQL--时态表或版本表(Temporal Tables 或 Versioned Tables)