1

このプロジェクトでは、何かがいつ作成され、編集され、最終的に処理されるかを追跡しています。このために 3 つの DateTime フィールドを設定しました。以下のコードは、レコードを作成するときのものです。

newsArchive.CreateDateTime = DateTime.Now;
newsArchive.ModifyDateTime = DateTime.MinValue;
newsArchive.SendDateTime = DateTime.MinValue;
naRepository.Add(newsArchive);
naRepository.Save();

「SqlDateTime オーバーフロー。1/1/1753 12:00:00 AM から 12/31/9999 11:59:59 PM の間である必要があります。」追加しようとすると。NULL を送信できないことはわかっています。これをどのように処理しますか?

これを処理するためにLinq2SQLを使用しています。

4

4 に答える 4

3

nullを送信できないのはなぜですか?私の知る限り、Linq2SQL は null 許容値型をサポートしています。DB の列を null 許容にする必要があるだけです。そうしないと、L2S が null 許容型の DAO を投影しません。

DateTime.MinValue の代わりに (DateTime)(SqlDateTime.MinValue) を使用できます。これは、DateTime に明示的にキャストされた、SQL と互換性のある最小の datetime 値を使用します。

SqlDateTime と DateTime はどちらも実際には UInt64 の「ティック」値として時間を格納しますが、2 つの型の違いは、SQL Server が異なるエポック (ゼロの値) と異なる解像度 (1 の「ティック」が表す分数) を使用することです。秒) CLR の DateTime よりも。

于 2011-01-12T20:18:42.320 に答える
2

どのバージョンのSQLServerを使用していますか?SQL 2008(または2008 R2)を使用している場合は、 .NETDateTime型の全範囲をサポートできるdatetime2データ型を使用できます。

それ以外の場合は、NULLを使用するか(モデルにタイプのプロパティが必要ですNullable<DateTime>)、データ型の制限内にあり、DateTime.MinValueがSQL日時タイプの制限を超えています。

于 2011-01-12T20:17:14.380 に答える
0

独自の最小日付を作成します。値が 1/1/1753 12:00:00 AM の Date 変数で、DateTime.MinValue の代わりにそれを使用します。

于 2011-01-12T20:11:56.973 に答える
0

datetime2 データ型では、1 年目から日付を指定できます。DateTime? も使用できます。.net コードで null 日付を許可するには

于 2011-01-12T20:17:41.560 に答える