EF6现在已经发布了使用.ToTable(e => e.IsTemporal())在配置和fluent api中执行时态表的功能,这是非常棒的,并且适用于我模型中的所有表。
不过,我使用的是身份模型(AspNetUser、AspNetRole等)。而这些表没有使用.ToTable语法来使它们具有时态性的设置;在如何在EF6世界中使用时态方法方面,我似乎有两个选项;但是我希望有一个更好的选项,并想知道是否有人知道理想的(或至少是推荐的)方法。
选项1:手动SQL语句
在迁移中,我可以执行类似于migrationBuilder.Sql的操作(“ALTER SET(SYSTEM_VERSIONING = ON (HISTORY_TABLE = AspNetUserHistory))")。这是很好的,但是是手动的,看起来并不是推荐的方法。
选项2:使用继承显式创建表
在我的模型中,我可以为所有标识模型类型(公共类ApplicationUser : IdentityUser)创建对象,然后将它们映射到相同的表名并包含(e => e.IsTemporal());但这意味着创建所有那些只继承而不添加任何东西来获取时态表的对象(希望有更好的方法)
选项3:推荐的Microsoft方法
我找不到一个推荐的方法来做这件事,希望它有一个标准的/推荐的解决方案。
发布于 2022-06-08 01:05:59
身份对象的直接使用
看起来我们可以直接使用Microsoft.AspNetCore.Identity命名空间来创建这样的时态表
modelBuilder.Entity().ToTable(e => e.IsTemporal());
https://stackoverflow.com/questions/72538443
复制相似问题