1

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
}
4

1 回答 1

2

EF Core 6.0 现在支持 IsTemporal(),它允许您使用 MS-SQL 历史记录表

我猜你想到了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
    }
}
于 2021-11-17T19:06:07.103 回答