C'è un modo per mappare una proprietà DateTimeOffset
a una colonna di SQL Server datetime
, con l'ipotesi che non è possibile modificare entrambi i lati, il che significa che la proprietà e la colonna devono rimanere tali date tipi?Mappatura framework entità DateTimeOffset a SQL Server DateTime
So che il modo più semplice è farli corrispondere ma vogliono sapere se c'è un modo per ovviare a questo problema. Stavo analizzando le mappature personalizzate ma sembrava che dovessi mappare tutte le colonne da solo e non solo la proprietà DateTimeOffset
.
ho provato:
modelBuilder.Entity<Customer>().Property(c => c.LastModifiedOn).HasColumnType("datetime");
Ma che ha gettato l'errore Member Mapping specified is not valid
.
Speravo di essere in grado di inserire il valore di proprietà UtcDateTime DateTimeOffset
nel db e durante la lettura il numero DateTimeOffset
è in UTC (ovvero un offset di zero).
Grazie.
Grazie per la risposta. Dobbiamo lavorare con più fusi orari e fare l'aritmetica con DateTimeOffset è più facile che dover convertire tutto in UTC prima di fare qualsiasi aritmetica con i tempi. – Carlos
Un motivo per evitare DateTime con EF è che i valori non vengono arrotondati: tutti i valori vengono caricati con DateTimeKind.Unspecified. Non c'è modo di dire a EF che dovrebbe essere impostato su UTC. Certo, ci sono degli hack per sistemarlo, ma sono brutti e alcuni potrebbero danneggiare le prestazioni (usando gli eventi ObjectContext). –
@ SørenBoisen - Nella mia migrazione durante la creazione di tabelle, aggiungo 'defaultValueSql:" GETUTCDATE() "' – Suamere