Sql server 实体框架6不';不能使用时态表

Sql server 实体框架6不';不能使用时态表,sql-server,entity-framework-6,sql-server-2016,db-first,temporal-tables,Sql Server,Entity Framework 6,Sql Server 2016,Db First,Temporal Tables,我修改了一个现有的表,使其成为时态的,然后从数据库中更新了模型。我在表中添加了两个新列时遇到了以下错误: 错误3004:映射从第1388行开始的片段时出现问题:否 为属性TbCities.SysStartTime指定的映射, 设置TbCities中的TbCities.SysEndTime。具有密钥(PK)的实体将不会 往返时间:实体类型为[DiERPModel.TbCities]1389 15 DiERP 这是我对更改表的查询: --Step 1. Adding nullable the c

我修改了一个现有的表,使其成为时态的,然后从数据库中更新了模型。我在表中添加了两个新列时遇到了以下错误:

错误3004:映射从第1388行开始的片段时出现问题:否 为属性TbCities.SysStartTime指定的映射, 设置TbCities中的TbCities.SysEndTime。具有密钥(PK)的实体将不会 往返时间:实体类型为[DiERPModel.TbCities]1389 15 DiERP

这是我对更改表的查询:

  --Step 1. Adding nullable the columns
  ALTER TABLE Common.TbCities ADD SysStartTime datetime2 NULL  
  GO
  ALTER TABLE Common.TbCities ADD SysEndTime datetime2 NULL  
  GO
  --Step 2 Adding the default constraints
  ALTER TABLE Common.TbCities ADD CONSTRAINT DF_Cities_SysStartTime DEFAULT GETDATE() FOR SysStartTime;
  GO
  ALTER TABLE Common.TbCities ADD CONSTRAINT DF_Cities_SysEndTime DEFAULT CAST('9999-12-31 23:59:59.9999999' AS DATETIME2) FOR SysEndTime;
  --Step 3 Updating the column
  UPDATE Common.TbCities 
    SET SysStartTime = '19000101 00:00:00.0000000'
        ,SysEndTime = '99991231 23:59:59.9999999'
  GO
  --Step 4 Setting NOT NULL to the columns
  ALTER TABLE Common.TbCities ALTER COLUMN SysStartTime datetime2 NOT NULL  
  GO
  ALTER TABLE Common.TbCities ALTER COLUMN SysEndTime datetime2 NOT NULL  
  GO
  --Step 5 Adding PERIOD FOR SYSTEM_TIME option
  ALTER TABLE Common.TbCities ADD PERIOD FOR SYSTEM_TIME (SysStartTime, SysEndTime)
  GO
  --Step 6 Setting SYSTEM_VERSIONING property
  ALTER TABLE Common.TbCities
      SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = Common.TbCities_History))
  GO 
我建议你加上:

[数据库生成(DatabaseGeneratedOption.Computed)]

TbCities
的实体模型类中的
SysStartTime
SysEndTime
, 这样,实体框架将知道它们的值将由SQL server生成,而不是将它们设置为自己的默认值