在 EF Core 6.0 中测试 table IsTemporal

Test if table IsTemporal in EF Core 6.0

EF Core 6.0 现在支持 IsTemporal(),它允许您使用 MS-SQL 历史记录 table。在提交数据之前,我使用 DbContext.OnBeforeSaving() 来验证某些字段。如果 table 是临时的,那么我想保存更新此行的人的 UserId。

如何测试 table 是否是暂时的? (即通过下面的伪代码)

foreach (var entry in ChangeTracker.Entries<MyBaseEntityType>())
{
   // if (entry is Temporal)
   //    set entry.Entity.UserID from IHttpContextAccessor.HttpContext.User
}

EF Core 6.0 now supports IsTemporal() which allows you to use an MS-SQL history table

估计你心里有数IsTemporal()流利配置API喜欢

modelBuilder.Entity<MyTable>().ToTable(tableBuilder =>
    tableBuilder.IsTemporal());

对于以这种方式配置的实体,有相应的 IsTemporal() 元数据扩展方法,例如(需要参考 Microsoft.EntityFrameworkCore.SqlServer 程序集)

foreach (var entry in ChangeTracker.Entries<MyBaseEntityType>())
{
    if (entry.Metadata.IsTemporal())
    {
        // Do something
    }
}