質問: 私はちょうどDapperを使ってMySqlデータベースにアクセスしようとしています。日付フィールドを扱うときに問題に遭遇しているようです。 MySql Date型フィールドをマップしようとすると、無効なキャストを受け取っています。 MySqlコネクタがMySqlDateTime型を返しているため、Dapperは日付の代わりにObjectにキャストします。関連するコードは次のとおりです 私のモデルのプロパティ定義 ``` public DateTime PickupDate { get; set; } ``` MySqlのフィールド定義 ``` PickupDate DATE ``` スローされた例外 ``` System.Data.DataException : Error parsing column 1 (PickupDate= - Object) ----> System.InvalidCastException : Specified cast is not valid. ``` 私はそれが私が行方不明でなければならないことを知っている、誰かが正しい方向に私はダッパーのDateTimeデータ型にこのフィールドをマップする必要があるように私を指すことができますか?
回答: 答えは、接続文字列でAllowZeroDateTimeをfalseに設定することでした。 ここにあるMySql conneciton文字列オプションのdoc から 。 > Trueに設定すると、MySqlDataReader.GetValue()は、日時ゼロの値などの値が許可されていないdateまたはdatetime列のMySqlDateTimeオブジェクトと、有効な値のSystem.DateTimeオブジェクトを返します。 False(既定の設定)に設定すると、すべての有効な値に対してSystem.DateTimeオブジェクトが返され、ゼロ日時値などの許容されない値に対しては例外がスローされます。 > > 何らかの理由で、有効な日付であっても、DateTimeではなくMySqlDateTime型を取得していました。これをfalseに変更すると、正しい動作が行われます。