人々はこれがコメントとしてより適していると主張するかもしれませんが、基本的に、それはそれを待ち望んでいます。
そして:
手元にシステムがないので、少し手伝ってもらう必要がありますので、頭のてっぺんからやっています。 (そして私は少し急いでいます)
まず、マップされていないプロパティから始めます:
[NotMapped]
public DateTime ExpiryDate { get; set; }
このプロパティはマップされていません。データベースがモデルと一致しないというエラーが発生する可能性がありますが、それを克服することはできます。このプロパティは、データのクエリ時に自動的に入力されません。ですから、これを自分自身で処理する方法が必要です。
たとえば、(エンティティのどこかにコンテキストが必要なため、これは悪い例です ):
[NotMapped]
public DateTime? ExpiryDate
{
get
{
//of course you'll need some caching here
var s = context.Database.SqlQuery<string>("query to select datetime as string");
//additional logic to determine validity:
if (s == "0000-00-00")
return null;
//else:
//do the conversion
}
}
ここでの基本的な質問。 EFフレームワーク内でこれをサポートするためにどこまで行きたいですか? EFなどのチェンジトラッカーを使用して、読み取るだけですか、それとも書き込む必要がありますか?
他にも、たとえば、 CAST SQL自体の中でnvarcharに移動して、データを取得し、さらに処理します。
たぶんModelBuilder
いくつかの追加オプションを公開します。