0

これが私のコードのスニペットです。

var sc = dc.Schedules.FirstOrDefault(s => s.scheduleID == id);
schedule = new ScheduleModel
{
    ScheduleId = sc.scheduleID,
    Name = sc.scheduleName,
    StartDate = sc.startDate.HasValue ? sc.startDate.Value : default(DateTime),
    EndDate = sc.endDate.HasValue ? sc.endDate.Value : default(DateTime),
    StatusId = sc.statusID.HasValue ? sc.statusID.Value : default(int),
    //other properties
};

元のコードは をチェックせずsc.startDate.HasValue、Resharper は警告について不平を言いましPossible System.InvalidOperationExceptionた。

次に、これらの条件を追加して、Resharper が文句を言わないようにしました。しかし、ここで使うのが正しいかどうかも疑問に思っていdefault(DateTime) & defualt(int)ました。SQL Server はデフォルトDateTime値を受け入れますか? DateTime.Nowまたは、代わりに使用する必要がありますか?

助言がありますか?ありがとう。

4

1 に答える 1

4

のデフォルト値はDateTimeです1/1/0001 12:00:00 AMが、SQL Server では DateTimeフィールドの範囲は です。したがって、デフォルト値の代わりにJanuary 1, 1753, through December 31, 9999使用する方が適切です。SQL Server に日付の .Net フレームワークのデフォルト値を保存することはできません。NULL

あなたのクラスScheduleModelの場合、私はStartDateand EndDateasDateTime?またはNullable<DateTime>

于 2013-06-27T03:18:26.367 に答える