EF Core – Temporal Table 时态表
前言
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 时态表的更多相关文章
- 使用ef core自动生成mysql表和数据编码的问题
mysql默认的编码是不支持中文的,需要改成utf8编码格式. 而我使用的Pomelo.EntityFrameworkCore.MySql组件生成mysql库和表,他是使用默认编码的. 网上大多说修改 ...
- 在EF Core中为数据表按列加密存储
假设有User表 public class User : Entity<int> { public int Id { get; set; } public string UserName ...
- EF Core中如何正确地设置两张表之间的关联关系
数据库 假设现在我们在SQL Server数据库中有下面两张表: Person表,代表的是一个人: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ...
- EF Core 2.0 已经支持自动生成父子关系表的实体
现在我们在SQL Server数据库中有Person表如下: CREATE TABLE [dbo].[Person]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...
- EF Core中如何设置数据库表自己与自己的多对多关系
本文的代码基于.NET Core 3.0和EF Core 3.0 有时候在数据库设计中,一个表自己会和自己是多对多关系. 在SQL Server数据库中,现在我们有Person表,代表一个人,建表语句 ...
- 深入理解 EF Core:EF Core 写入数据时发生了什么?
阅读本文大概需要 14 分钟. 原文:https://bit.ly/2C67m1C 作者:Jon P Smith 翻译:王亮 声明:我翻译技术文章不是逐句翻译的,而是根据我自己的理解来表述的.其中可能 ...
- EF Core中,通过实体类向SQL Server数据库表中插入数据后,实体对象是如何得到数据库表中的默认值的
我们使用EF Core的实体类向SQL Server数据库表中插入数据后,如果数据库表中有自增列或默认值列,那么EF Core的实体对象也会返回插入到数据库表中的默认值. 下面我们通过例子来展示,EF ...
- EntityFramework Core 2.x (ef core) 在迁移中自动生成数据库表和列说明
在项目开发中有没有用过拼音首字母做列名或者接手这样的项目? 看见xmspsqb(项目审批申请表)这种表名时是否有一种无法抑制的想肛了取名的老兄的冲动? 更坑爹的是这种数据库没有文档(或者文档老旧不堪早 ...
- 【翻译】Flink Table Api & SQL —Streaming 概念 —— 时态表
本文翻译自官网: Temporal Tables https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/strea ...
- Asp.net core下利用EF core实现从数据实现多租户(2) : 按表分离
前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是 ...
随机推荐
- ComfyUI进阶:Comfyroll插件 (四)
ComfyUI进阶:Comfyroll插件 (四) 前言: 学习ComfyUI是一场持久战,而Comfyroll 是一款功能强大的自定义节点集合,专为 ComfyUI 用户打造,旨在提供更加丰富和专业 ...
- Jetpack Compose学习(12)——Material Theme的主题色切换
原文:Jetpack Compose学习(12)--Material Theme的主题色切换-Stars-One的杂货小窝 闲着无事研究了下Jetpack Compose M3 主题切换效果 本系列以 ...
- AI/机器学习(计算机视觉/NLP)方向面试复习1
1. 判断满二叉树 所有节点的度要么为0,要么为2,且所有的叶子节点都在最后一层. #include <iostream> using namespace std; class TreeN ...
- P5665 [CSP-S2019] 划分
思路: 首先求出 \(a\) 的前缀和数组 \(s\). 考虑动态规划,令 \(dp_{i,j}\) 表示以 \(i\) 结尾,末尾有 \(j\) 个为一组的最小答案,则状态转移方程为: \[dp_{ ...
- 【Java】SPI机制
SPI全称: 服务供应商接口 Service Provider Interface 服务发现机制 入门概念视频来自于: https://www.bilibili.com/video/BV1E44y1N ...
- 如何计算两个正太分布的KL散度 —— 正太分布的KL散度 (Kullback-Leibler divergence) 计算
参考: https://blog.csdn.net/int_main_Roland/article/details/124650909 给出实现代码: def get_kl(): mean0, log ...
- 论文《policy-gradient-methods-for-reinforcement-learning-with-function-approximation 》的阅读——强化学习中的策略梯度算法基本形式与部分证明
最近组会汇报,由于前一阵听了中科院的教授讲解过这篇论文,于是想到以这篇论文为题做了学习汇报.论文<policy-gradient-methods-for-reinforcement-learni ...
- Ax = b 的迭代解法 —— 共轭梯度 (算法步骤)
线性方程组 Ax =b 除了高斯消元法以外,还有其它的迭代解法,这里我们说的是共轭梯度法. 这里只针对 A 满足 对称 ( ), 正定(即 ),并且是实系数的,那么我们可以用 梯度下降 和 共轭梯 ...
- Python网络连接request报错:OSError: [Errno 113] No route to host
报错: (pytorch) devil@Monster:~$ huggingface-cli login _| _| _| _| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _ ...
- 【转载】 t-SNE是什么? —— 使用指南
原文地址: https://www.cnblogs.com/LuckBelongsToStrugglingMan/p/14161405.html 转者前言: 该文相当于一个 t-SNE 使用指南, ...