Czy istnieje sposób odwzorowania właściwości DateTimeOffset
na kolumnę SQL Server datetime
z założeniem, że nie można zmienić żadnej ze stron, co oznacza, że właściwość i kolumna muszą pozostać tą datą typy?Mapowanie jednostek Entity DataTimeOffset na SQL Server DataTime
Wiem, że najłatwiej jest je dopasować, ale chcą wiedzieć, czy istnieje sposób obejścia tego problemu. Szukałem niestandardowych mapowań, ale wydawało mi się, że muszę sam zamapować wszystkie kolumny, a nie tylko właściwość DateTimeOffset
.
Próbowałem:
modelBuilder.Entity<Customer>().Property(c => c.LastModifiedOn).HasColumnType("datetime");
Ale że wyrzucił błąd Member Mapping specified is not valid
.
Miałem nadzieję, że będę w stanie umieścić wartość właściwości UtcDateTime DateTimeOffset
w db i podczas odczytu mieć wartość UTC (tj. Mieć Offset równy zero).
Dzięki.
Dzięki za odpowiedź. Musimy pracować z wieloma strefami czasowymi, a robienie arytmetyki przy pomocy funkcji DateTimeOffset jest łatwiejsze niż konwersja wszystkiego na UTC przed wykonaniem arytmetyki z czasami. – Carlos
Jedną z przyczyn uniknięcia DateTime z EF jest to, że wartości nie są okrągłe: wszystkie wartości są załadowane za pomocą DateTimeKind.Unspecified. Bez możliwości powiedzenia EF, że powinien domyślnie UTC. Na pewno są hacki do naprawienia, ale są brzydkie, a niektóre mogą zaszkodzić wydajności (używając zdarzeń ObjectContext). –
@ SørenBoisen - Podczas mojej migracji podczas tworzenia tabeli, po prostu dodaję "defaultValueSql:" GETUTCDATE() "' – Suamere