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) : 按表分离
前言 在上一篇文章中,我们介绍了如何根据不同的租户进行数据分离,分离的办法是一个租户一个数据库. 也提到了这种模式还是相对比较重,所以本文会介绍一种更加普遍使用的办法: 按表分离租户. 这样做的好处是 ...
随机推荐
- CGI、FastCGI和PHP-FPM区别和关系详解
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器.接下来我们就以图形方式,解释这些概念之间的关系. 1 ...
- JavaScript处理后端返回PDF文件流,在线预览下载PDF文件
在实际开发业务中,遇到这一需求,即后端返回的pdf文件,是以base64文件流的方式,在此不便操作接口响应等操作,便以上传一个文件转化为文件流的形式模拟 实际应用时,base64Img = res.d ...
- PositiveSmallIntegerField、SmallIntegerField和IntegerField
当您在Django中定义模型时,有几种不同的整数字段类型可供选择,包括PositiveSmallIntegerField.SmallIntegerField和IntegerField.以下是这三种整数 ...
- __int128的输入输出(快读快输)
引言:__int128不能用\(cin\)\(cout\)或\(scanf\)\(printf\). 快读 思想:把每一个字符读入,组成数字. int read(){ int x = 0,y = 1; ...
- 2024 Selenium10个替代品
随着自动化测试需求的不断增长,Selenium作为广泛使用的自动化测试工具,虽然功能强大,但也存在一些限制和挑战.在2024年, 越来越多的替代工具涌现,它们提供了更高效.更易用的解决方案.那么,哪些 ...
- c++ 关于返回值、将亡值的调用研究
c++11引入右值引用,而出现右值引用的有这几种:返回值(将亡值),常量. class Obj { public: Obj() { cout << "构造函数" < ...
- .NET 轻量级 命令行工具 CSharpRepl
前言 当我们需要快速测试代码片段时,常见的做法是启动Visual Studio或使用在线代码编辑器.然而,Visual Studio的启动可能较为缓慢且占用较多系统资源,而在线编辑器则可能遇到语法支持 ...
- 题解 WD与数列
P5161 WD与数列 可以想到原条件是一个差分形式,所以我们对原数组差分.然后发现答案其实就是 \(\sum_{i<j} \min(lcp(i+1,j+1)+1,j-i)\). 这个东西先跑 ...
- 常用的adb命令(重要)
常用的adb命令(重要)
- Fidder响应数据SyntaxView乱码的处理方法
当Fidder查看响应数据"SyntaxView"出现乱码时,可以点击上方菜单栏的"Decode"按钮,等"Decode"出现蓝色边框后再重 ...