在 EF Core 6.0 中测试表 IsTemporal
Posted
技术标签:
【中文标题】在 EF Core 6.0 中测试表 IsTemporal【英文标题】:Test if table IsTemporal in EF Core 6.0 【发布时间】:2021-12-28 17:21:23 【问题描述】:EF Core 6.0 现在支持 IsTemporal(),它允许您使用 MS-SQL 历史表。在提交数据之前,我使用 DbContext.OnBeforeSaving() 来验证某些字段。如果表是临时表,那么我想保存更新此行的人的 UserId。
如何测试表是否是临时的? (即通过下面的伪代码)
foreach (var entry in ChangeTracker.Entries<MyBaseEntityType>())
// if (entry is Temporal)
// set entry.Entity.UserID from IHttpContextAccessor.HttpContext.User
【问题讨论】:
【参考方案1】:EF Core 6.0 现在支持 IsTemporal(),它允许您使用 MS-SQL 历史记录表
我猜你想到了IsTemporal()
fluent configuration API like
modelBuilder.Entity<MyTable>().ToTable(tableBuilder =>
tableBuilder.IsTemporal());
对于以这种方式配置的实体,有相应的IsTemporal()
元数据扩展方法,例如(需要参考 Microsoft.EntityFrameworkCore.SqlServer
程序集)
foreach (var entry in ChangeTracker.Entries<MyBaseEntityType>())
if (entry.Metadata.IsTemporal())
// Do something
【讨论】:
以上是关于在 EF Core 6.0 中测试表 IsTemporal的主要内容,如果未能解决你的问题,请参考以下文章
GroupBy 与 EF Core 6.0 和 SQL Server
Asp.net Core 6.0 使用EF Model First 连接mysql
Asp.net Core 6.0 使用EF Model First 连接mysql