DateTimeOffset
プロパティをSQL Server datetime
列にマップする方法はありますか。どちらの側も変更できないという前提で、プロパティと列はその日付のままでなければなりません。タイプ?エンティティフレームワークのマッピングDateTimeOffsetからSQL Server DateTime
私はそれらを一致させるのが最も簡単だと知っていますが、これを回避する方法があるかどうかを知りたいと思っています。カスタムマッピングを検討していましたが、DateTimeOffset
プロパティだけでなく、すべての列を自分自身でマッピングする必要があるようでした。
私が試した:
modelBuilder.Entity<Customer>().Property(c => c.LastModifiedOn).HasColumnType("datetime");
をしかし、それはMember Mapping specified is not valid
エラーを投げました。
UtcDateTime DateTimeOffset
プロパティ値をdbに入れて、読み取り時にDateTimeOffset
がUTCである(つまり、ゼロのオフセットを持つ)ことを期待していました。
ありがとうございました。
お返事ありがとうございます。複数のタイムゾーンで作業しなければならず、DateTimeOffsetで算術演算を行うのは、すべての演算をUTCに変換するよりも簡単です。 – Carlos
EFでDateTimeを回避する理由の1つは、値が往復しないことです。すべての値にDateTimeKind.Unspecifiedがロードされます。 EFにデフォルトをUTCに設定するよう指示する方法はありません。確かにそれを修正するためのハックがありますが、それらは醜いものもあれば、(ObjectContextイベントを使って)パフォーマンスを低下させるものもあります。 –
@SørenBoisen - テーブル作成時のマイグレーションでは、 'defaultValueSql:" GETUTCDATE() "' – Suamere