前言

EF core 6.0 开始有 build-in 的 Temporal Table 支持了.

关于 SQL Server Temporal Table 可以看这篇.

主要参考

What's New in EF Core 6.0 # SQL Server temporal tables

实战

Configuration

可以设置 History Table Name, SysStartTime, SysEndTime
默认是 TableNameHistory, PeriodStart, PeriodEnd

builder.ToTable(b => b.IsTemporal());
//builder.ToTable("Branch", b => b.IsTemporal(b => {
// b.UseHistoryTable("BranchHistory");
// b.HasPeriodStart("SysStartTime");
// b.HasPeriodEnd("SysEndTime");
//}));

Create, Update, Delete

和一般操作一模一样

var branch = new Branch
{
Name = "Kulai1",
Address = "Kulai1",
ContactNumber = "07-5586349"
};
_db.Branches.Add(branch);
await _db.SaveChangesAsync();
await Task.Delay(3000);
branch.ContactNumber = "07-2249129";
await _db.SaveChangesAsync();
await Task.Delay(3000);
_db.Branches.Remove(branch);
await _db.SaveChangesAsync();

Select

全部资料调出来

var branches1 = await _db.Branches.TemporalAll().ToListAsync();

调出某个时间点的资料

var branches2 = await _db.Branches.TemporalAsOf(
DateTime.SpecifyKind(DateTime.Parse("2021-10-19 13:04:01.7980901"), DateTimeKind.Utc)
).ToListAsync();

注: 其实只要放进去的是 datetime 就可以了, kind 会直接被忽视掉. 它也不会智能把 Local Time 换去 UTC 哦

调出某个期间的资料

var branches4 = await _db.Branches.TemporalBetween(
new DateTime(2021, 10, 19, 13, 4, 7, 284, DateTimeKind.Utc),
new DateTime(2021, 10, 19, 13, 4, 7, 284, DateTimeKind.Utc)
).ToListAsync();
var branches5 = await _db.Branches.TemporalFromTo(
new DateTime(2021, 10, 19, 13, 4, 7, 284, DateTimeKind.Utc),
new DateTime(2021, 10, 19, 13, 4, 7, 284, DateTimeKind.Utc)
).ToListAsync();

调出某个期间内的资料

var branches6 = await _db.Branches.TemporalContainedIn(
new DateTime(2021, 10, 19, 13, 4, 7, 284, DateTimeKind.Utc),
new DateTime(2021, 10, 19, 13, 4, 7, 284, DateTimeKind.Utc)
).ToListAsync();

EF Core – Temporal Table 时态表的更多相关文章

  1. 使用ef core自动生成mysql表和数据编码的问题

    mysql默认的编码是不支持中文的,需要改成utf8编码格式. 而我使用的Pomelo.EntityFrameworkCore.MySql组件生成mysql库和表,他是使用默认编码的. 网上大多说修改 ...

  2. 在EF Core中为数据表按列加密存储

    假设有User表 public class User : Entity<int> { public int Id { get; set; } public string UserName ...

  3. EF Core中如何正确地设置两张表之间的关联关系

    数据库 假设现在我们在SQL Server数据库中有下面两张表: Person表,代表的是一个人: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ...

  4. EF Core 2.0 已经支持自动生成父子关系表的实体

    现在我们在SQL Server数据库中有Person表如下: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...

  5. EF Core中如何设置数据库表自己与自己的多对多关系

    本文的代码基于.NET Core 3.0和EF Core 3.0 有时候在数据库设计中,一个表自己会和自己是多对多关系. 在SQL Server数据库中,现在我们有Person表,代表一个人,建表语句 ...

  6. 深入理解 EF Core:EF Core 写入数据时发生了什么?

    阅读本文大概需要 14 分钟. 原文:https://bit.ly/2C67m1C 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能 ...

  7. EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的

    我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...

  8. EntityFramework Core 2.x (ef core) 在迁移中自动生成数据库表和列说明

    在项目开发中有没有用过拼音首字母做列名或者接手这样的项目? 看见xmspsqb(项目审批申请表)这种表名时是否有一种无法抑制的想肛了取名的老兄的冲动? 更坑爹的是这种数据库没有文档(或者文档老旧不堪早 ...

  9. 【翻译】Flink Table Api & SQL —Streaming 概念 —— 时态表

    本文翻译自官网: Temporal Tables https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/strea ...

  10. Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离

    前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是 ...

随机推荐

  1. 在Windows系统中解决端口占用问题

    在Windows系统中,你可以通过以下步骤查询并结束占用8001端口的进程: 查询占用8001端口的进程: 打开命令提示符(CMD)或者PowerShell,并执行以下命令:   netstat -a ...

  2. TIER 1: Three

    TIER 1: Three 信息收集 通过以前的练习,我们首先确认目标 IP 开放了哪些端口,比如使用 nmap 之类的工具进行扫描.本次靶机开放: 22 端口:SSH, OpenSSH 80 端口: ...

  3. 靶机: AdmX_new

    靶机: AdmX_new 准备阶段 靶机:https://download.vulnhub.com/admx/AdmX_new.7z 下载后进行 MD5:2948034da23a8acc1285fd4 ...

  4. 单细胞测序最好的教程(十):细胞类型注释迁移|万能的Transformer

    作者按 本章节主要讲解了基于transformer的迁移注释方法TOSICA,该算法在迁移注释上达到了SOTA的水平,在注释这么卷的赛道愣是杀出了一条血路.本教程首发于单细胞最好的中文教程,未经授权许 ...

  5. Stream流之List、Integer[]、int[]相互转化

    一. int[ ]转化 1.1.int[ ] 转 List< Integer > public static void main(String[] args) { int[] arr = ...

  6. Ubuntu 20.04 双系统安装完整教程

    1.查看电脑的信息 1.1 查看BIOS模式 "win+r"快捷键进入"运行",输入"msinfo32"回车,出现以下界面,可查看BIOS模 ...

  7. 用了组合式 (Composition) API 后代码变得更乱了,怎么办?

    前言 组合式 (Composition) API 的一大特点是"非常灵活",但也因为非常灵活,每个开发都有自己的想法.加上项目的持续迭代导致我们的代码变得愈发混乱,最终到达无法维护 ...

  8. 对比python学julia(第四章:人工智能)--(第一节)OpenCV编程初步(3)

    1.4.  人脸检测 (续上) 3.检测视频中的人脸 在VSCode环境中,新建一个空白源文件,以detect_video.jl作为文件名保存到项目文件夹中,然后编写程序检测视频流中的人脸(正脸).由 ...

  9. 创绘-AI一键小说转漫画视频

    创绘-AI一键小说转漫画视频 创绘简介 一键智能AI推理提示词,自动关联上下文,画面匹配度更高 一键批量绘图,同时支持本地和云端模式(没有显卡也能畅享绘图) 一键导出剪映草稿,自动生成关键帧,快速图文 ...

  10. 外形最漂亮的人形机器人——通用机器人Apollo,设计为可以在任何任务和环境中与人类进行协作

    视频地址: https://www.bilibili.com/video/BV11F4m1M7ph/