【发布时间】:2019-10-23 16:00:56
【问题描述】:
我想在 DBContext 中的项目中添加 SQL 时态表,而不是在迁移文件中?如何实现? 编辑: 我已将它添加到种子功能,但它仍然无法正常工作
protected override void Seed(MSDBContext context)
{
string sql = @" ALTER TABLE dbo.Workshops
ADD SysStartTime datetime2 GENERATED ALWAYS AS ROW START
CONSTRAINT DF_Workshops_SysStartTime DEFAULT SYSUTCDATETIME() NOT NULL,
SysEndTime datetime2 GENERATED ALWAYS AS ROW END
CONSTRAINT DF_Workshops_SysEndTime DEFAULT CONVERT (DATETIME2, '9999-12-31 23:59:59') NOT NULL,
PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)
GO
ALTER TABLE dbo.Workshops
SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.WorkshopsHistory))
GO";
context.Database.ExecuteSqlCommand(sql);
context.SaveChanges();
context.Configuration.LazyLoadingEnabled = false;
}
【问题讨论】:
-
EF 不是用来创建临时表的。 “临时”的意思是“在一个事务内——所以在一个查询中,你创建一个表,转换它,获取一些输出并删除它。所有这些都在同一个步骤中。EF 不支持这种复杂的查询。你只是想在运行时创建一个表?那会有所不同。
-
@Holger 临时表不是临时表。
-
我不知道临时表 - 所以感谢您的提示。我怀疑 EF Core 是否支持它
标签: c# asp.net-mvc entity-framework code-first temporal-tables