1. ホーム
  2. c#

[解決済み] DbContextとSetInitializerを使用して、datetime2の範囲外の変換エラーを修正する方法は?

2022-05-26 08:32:19

質問

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

データモデル のような基本的なデータ型を使用します。 stringDateTime . 場合によっては使っている唯一のデータアノテーションが [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データ型への変換は データ型からdatetimeデータ型に変換した結果 は範囲外の値でした。このため 文は終了しました。

すべてがシンプルなので、なぜこのようなことが起こるのかまったく理解できません。また、編集するためのedmxファイルがないので、どのように修正すればよいのかわかりません。

何かアイデアはありますか?

どのように解決するのですか?

Start が SqlDateTime.MinValue (January 1, 1753) 以上であることを確認する必要があります - デフォルトでは Start は DateTime.MinValue (January 1, 0001) に等しいです。