7

Tengo una tabla con DateCreated y DateUpdated columnas y uso de Entity Framework para insertar/actualizar valores en la base de datos.Columna Entity Framework DateTime - GetDate() valor Inserción

Necesito la columna DateCreated para obtener el valor GetDate() del SQL Server en la inserción solamente.

DateUpdated El valor de la columna siempre debe actualizarse con el valor GetDate() actual en la inserción y actualizar ambos.

para la columna de DateCreated, lo he instalado StoreGeneratedPattern="Computed" y en la tabla de SQL Server He configurado valor predeterminado de la columna para que sea GetDate(), que funciona muy bien como se esperaba.

Para la columna DateUpdated no pude encontrar una manera de obtener el valor GetDate() establecido automáticamente cada vez que se actualiza una entrada. Este valor se establece solo cuando se inserta una entrada.

Podría alguien arrojar algo de luz sobre esto.

+0

Ha intentado 'StoreGeneratedPattern = "Identidad"'? –

+1

¿por qué getdate no es el valor predeterminado de db para el trabajo de datecreated? no debe sobrescribirlo si no lo actualiza ... –

+0

Estoy de acuerdo con DMoses: el valor predeterminado solo se rellena en la creación de filas. –

Respuesta

7

Si desea que DateUpdated sea establecido por la base de datos, puede usar un disparador para establecer el valor en getdate(). Creo que EF también obtendrá el valor establecido por el activador si establece StoreGeneratedPattern="Computed" para DateUpdated.

Como referencia, el gatillo sería algo como esto (que tendrá que actualizar por PK de su mesa):

create trigger MyTable_UpdatedTrigger 
on MyTable 
for update 
as 
begin 
    update t set DateUpdated = getdate() 
    from MyTable t 
     join inserted i on t.Id = i.Id 
end 
Cuestiones relacionadas