前言

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. njs最详细的入门手册:Nginx JavaScript Engine

    原文链接:https://hi.imzlh.top/2024/07/08.cgi 关于njs 首先,njs似乎在国内外都不受关注,资料什么的只有 官网参考手册,出了个问题只能看到Github Issu ...

  2. 如何平稳地从nacos迁移到r-nacos?

    1. 引言 很多同学了解r-nacos特性后最开始只将r-nacos用于开发测试环境. 经过一段时间的使用后,部分同学有打算生成环境也从nacos迁移到r-nacos. 一些之前使用nacos服务的同 ...

  3. 一些常用的Utils总结

    1.BeanUtils.copyProperties,来自spring框架,作用是把对象的属性拷贝给另一个对象 BeanUtils.copyProperties(employeeDTO,employe ...

  4. yum密钥报错

    解决报错 [root@node3 mnt]# cat /etc/yum.repos.d/local.repo [BaseOS_repo] baseurl = file:///mnt/BaseOS en ...

  5. 【Layui】15 日期时间选择器 Laydate

    文档地址: https://www.layui.com/demo/laydate.html [基本案例] 基本日期与国际日期 <fieldset class="layui-elem-f ...

  6. 基于浅层神经网络(全连接网络)的强化学习算法(Reinforce) 在训练过程中出现梯度衰退(degenerate)的现象

    首先给出一个代码地址: https://gitee.com/devilmaycry812839668/CartPole-PolicyNetwork 强化学习中的策略网络算法.<TensorFlo ...

  7. 解密prompt系列35. 标准化Prompt进行时! DSPy论文串烧和代码示例

    一晃24年已经过了一半,我们来重新看下大模型应用中最脆弱的一环Prompt Engineering有了哪些新的解决方案.这一章我们先看看大火的DSPy框架,会先梳理DSPy相关的几篇核心论文了解下框架 ...

  8. [USACO09JAN] Safe Travel G 题解

    UPDATE on 2024.5.10 删去左偏树代码中令人误解的 fa 数组. 前话 题目链接:洛谷. 貌似别人都是使用并查集维护的方法,然而由于排序.最短路等算法瓶颈,以下令 \(n\) 和 \( ...

  9. @RequestBody中传递json里的对象,对象包含list属性,对应body里的格式

    以下就是对应格式,直接复制进接口文档相关工具即可{ "userId": "88", "openCostCenterDTO": [ { &qu ...

  10. Mongodb使用save更新

    mongodb 的 insert().save()  ,区别主要是:若存在主键,insert()  不做操作,而save() 则更改原来的内容为新内容. 在使用save时,由于mongodb默认是_i ...