Dapperを使用してMySqlのDateフィールドをマップするときにInvalidCastExceptionが発生する

.net c# dapper mysql

質問

私はちょうど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に変更すると、正しい動作が行われます。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ