0

Ich habe eine vorhandene Tabelle geändert, um es zeitlich zu machen, Dann habe ich das Modell aus der Datenbank aktualisiert. I angetroffen mit diesen Fehlern, mit den beiden neuen Spalten I die Tabelle hinzugefügt:Entity Framework 6 funktioniert nicht mit Temporal Tabelle

Fehler 3004: Keine Mapping Objekte TbCities.SysStartTime angegeben, TbCities.SysEndTime in: Problem bei der Kartierung Fragmenten in Zeile 1388 beginnend Setze TbCities. Ein Unternehmen mit Key (PK) nicht Round-Trip, wenn: Entity ist der Typ [DiERPModel.TbCities] 1389 15 DiERP

Diese meine Anfrage zum Ändern Tabelle ist:

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

Antwort

0

Ich schlage vor, Sie hinzufügen:

[DatabaseGenerated(DatabaseGeneratedOption.Computed)]

zu SysStartTime und SysEndTime in Ihrer Entity Model-Klasse für TbCities, , damit das Entity Framework weiß, dass ihre Werte vom SQL-Server generiert werden und sie nicht auf ihren eigenen Standardwert setzen.