我已经改变了现有的表格以使其成为时间表,然后我从数据库更新了模型。我遇到了这些错误,我在表中添加了两个新列:
错误3004:从第1388行开始映射片段时出现问题:否 为属性TbCities.SysStartTime指定的映射, Set 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
答案 0 :(得分:0)
我建议你补充一下:
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
到您SysStartTime
的实体模型类中的SysEndTime
和TbCities
,
这样实体框架就会知道它们的值将由SQL服务器生成,而不是将它们设置为自己的默认值。