2012-05-08 19 views
4

SqlException:datetime2データ型をdatetimeデータ型に変換すると、範囲外の値が返されました。"SqlExceptionを解決する方法:datetime2データ型のdatetimeデータ型への変換は、範囲外の値になりました。

私のコードは次のようである:

 using (var contxt = new realtydbEntities()) 
     { 
      var status = GetStatus(); 

      var repIssue = new RepairIssue() 
      { 
       CreaterId = AuthorId, 
       RepairItemDesc = this.txtDescription.Text, 
       CreateDate = DateTime.Now,//here's the problem 
       RepairIssueStatu = status 
      }; 

      contxt.AddObject("RepairIssues", repIssue); 
      contxt.SaveChanges(); 
     } 

タイプはsmalldatetime型ある列にCREATEDATEプロパティマッピング。

このコードを実行するにはどうすればよいですか?

+0

[datetime2データ型からdatetimeデータ型への変換は範囲外ですか?](https://stackoverflow.com/questions/7386360/the-conversion-of-a-) –

答えて

2

問題の根本は、C#DateTimeオブジェクトがSQLのsmalldatetime型よりも「大きい」ということです。ここでの違いの良い概要を示します:http://www.karaszi.com/SQLServer/info_datetime.asp

だから、本当にあなたのオプションは次のとおりです。

  1. の変更、列datetime型にsmalldatetime型から型(またはDATETIME2)EFを使用するのではなく、
  2. 、独自のSQLコマンドを構築(そして、あなたはSqlDateTimeを使うことができます)
+3

これは、 'DateTime.Now will'がSmallDateTimeに収まらない理由を説明していません。サイズについてはそれほど重要ではありませんが、格納できる範囲と精度/精度についてはそうです。 'DateTime.Now 'は、(あなたのPCクロックを300年前に設定しない限り)SmallDateTimeフィールドの有効な値でなければなりませんが、現在、私は現在、正確に同じエラーを経験しています。 04/10/2013 12:49:00}をSQL SmallDateTimeフィールドに追加します。私がどこにいても正しい答えを見つけることができないのは残念です。 –

+0

@TrueBlueAussie変換で情報が失われる可能性があるため、「より大きな」タイプから「より小さい」タイプへの自動変換は禁止されています。これは、「より大きい」とは「大きい数値を保持できる」ことを意味するのか、「より正確な精度を保持できる」ことを意味するのかにかかわらず、同じことです。 C#では、小数点以下の秒数が重要であると想定しています(明示的なキャストなど)。 – GrandOpener

+0

@ GrandOpener:申し訳ありませんが、あなたは私のコメントを誤解しました。私は単純に答えが*なぜDateTime.NowがSmallDateTime *に収まらないのか説明していたはずであることを意味しました。私は説明を求めていなかった:) –

1

SqlDateTimeは、あなたが必要とすることを可能にします。

+0

あなたが示唆しているように 'DateTime'から' SqlDateTime'を作成した場合、EFに 'Value'を使用してください(EFプロパティはDateTimeであるため)このエラーが発生した場合でも、まったく同じエラーが表示されます。この回答は、問題がどのように解決されるかを明確にすることができない限り、EF(質問に関する)には間違っています。 –

5

私は同じ例外がありましたが、これはnull datetimeの値をとるnull可能でないdatetimeプロパティが原因でした。これはDBの小さな日付ではありませんでしたが、C#の最小日時はSQLの最小日時の制限を超えています。 解決策は明白で、datetimeを適切に設定しました。 ところで、コードは私のものではなかったので、私はそのプロパティを知らなかったのです。

0

私はSQLテーブルとアプリケーションにdatetimeカラムを追加していたので、このエラーが発生しました。私は新しい記録を更新できることを知りました。追加されたフィールドの前にテーブルにあったレコードは、そのいずれかで更新が試行されたときにこのエラーを投げました。

関連する問題