質問:
DateTime 列を含む DataTable データをデータベースに保存すると、DateTime2 から DateTime データ型への変換が範囲外であることを示すエラーが発生します。コードとデータベースでデータ型が正しく割り当てられているにもかかわらず、この問題は解決しません。
質問:
この変換エラーはコードを変更することで解決できますか? それともデータベースの変更が必要ですか?
答え:
短い答え:
はい、DateTime フィールドの値を初期化すると、この問題は解決します。 DateTime は NULL 値を受け入れないため、デフォルト値を割り当てることが重要です。
詳細な回答:
C# の null 非許容 DateTime 型の既定値は DateTime.MinValue (01/01/0001) であり、これは SQL Server DateTime では無効な範囲です。この違いは、SQL Server DateTime のグレゴリオ暦システムにより、有効な日付の最小値が 01/01/1753 であるためです。ただし、Entity Framework の DateTime2 では、0001/01/01 から始まる日付が許可されます。
Entity Framework の DateTime2 フィールドからデータを保存すると、SQL Server 側で暗黙的に DateTime にキャストされます。この変換により範囲外エラーが発生します。この問題を解決するには、許可された範囲内の有効な値で DateTime フィールドを明示的に初期化すると、変換エラーが防止されます。
以上がSQL Server データベースにデータを保存するときに発生する DateTime2 から DateTime の範囲外変換エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。