DbContext と SetInitializer を使用して datetime2 の範囲外変換エラーを修正するにはどうすればいいですか? [重複] 質問する

DbContext と SetInitializer を使用して datetime2 の範囲外変換エラーを修正するにはどうすればいいですか? [重複] 質問する

Entity Framework 4.1 で導入された DbContext および Code First API を使用しています。

データ・モデルstringは、やなどの基本データ型を使用しますDateTime。場合によっては のみデータ注釈を使用します[Required]が、これはどのDateTimeプロパティにも存在しません。例:

public virtual DateTime Start { get; set; }

DbContext サブクラスこれもシンプルで次のようになります。

public class EventsContext : DbContext
{
    public DbSet<Event> Events { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Event>().ToTable("Events");
    }
}

初期化子モデル内の日付を今年または来年の適切な値に設定します。

しかし、初期化を実行すると、次のエラーが発生しますcontext.SaveChanges():

datetime2 データ型を datetime データ型に変換した結果、範囲外の値になりました。ステートメントは終了しました。

すべてがとても単純なので、なぜこのようなことが起こるのか全く理解できません。編集する edmx ファイルがないので、修正方法もわかりません。

何か案は?

ベストアンサー1

Start が SqlDateTime.MinValue (1753 年 1 月 1 日) 以上であることを確認する必要があります。デフォルトでは、Start は DateTime.MinValue (0001 年 1 月 1 日) と同じです。

おすすめ記事