sql >> データベース >  >> RDS >> Sqlserver

datetime2 データ型を smalldatetime データ型に変換すると、範囲外の値になりました。\r\nステートメントは終了しました

    エラーの外観から、データベースは 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 に変換するトリガーをデータベースに記述します。

    うまくいけば、私はあなたの質問を正しく理解し、私の答えが役に立ちます.




    1. MySQLDELIMITERキーワードが機能していません

    2. SQL自己結合

    3. 未定義のインデックス:C:\ wamp \ www \ Website \ storeadmin \admin_login.php..のユーザー名とパスワードも同じ

    4. MySQLデーモンエラーログの場所を見つけるにはどうすればよいですか?