エラーの外観から、データベースは SmallDateTime を日付型として使用しています。その最小値は 1900-Jan-01 です。あなたのエンティティが以下のようなものであると仮定します
public class Game { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public Guid GameId { get;設定; } [必須] public DateTime GameTime { get;設定; } }コード> プレ>
GameTime の値は null 値にできないため、値を設定しないと、常に DateTime.Min (0000-Jan-01) になります。これは SmallDateTime の範囲外ですが、DateTime2 の範囲内です。したがって、EF は DateTime2 SQL 型を SQL サーバーに渡そうとします。データベースが SmallDateTime を使用しているため、質問に示されているエラーが表示されます。
この問題を解決するには、次のオプションが考えられます:
<リ>
フィールドを nullalbe にします。 (入力日付が SmallDateTime の範囲内にあるかどうかを常に確認する必要があります。)
<リ>
または SQL サーバーで日付タイプを DateTime2 に変更します
<リ>
または、データベースの作成時に EF に DateTime2 データ型を使用するように強制します。コードは以下のようなものになります。 (このメソッドはコンテキスト クラス内にある必要があります。)
protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity() .Property(t => t.GameTime ) .HasColumnType("datetime2"); }コード> プレ> <リ>
アプリケーションの smalldatetime と一致するように DateTime プロパティの min 値を設定するコンバーター ヘルパーを作成します。
<リ>
DateTime2 (アプリケーション側ではなく、データベース側では datetime2) を smalldatetime に変換するトリガーをデータベースに記述します。
うまくいけば、私はあなたの質問を正しく理解し、私の答えが役に立ちます.