在 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 - 不是吗? (时态表中的计算列)
1.19.5.4.流上的Join常规Join时间区间Join时态表Join基于处理时间的时态Join时态表函数Join用法