問題なく新しいレコードを作成しますが、モデルを更新するたびに、日付が変更されていない場合でも、「式をデータ型 datetime に変換する算術オーバーフロー エラー」エラーが発生します。
更新する既存の db レコードの日付が有効であることを確認しました。
以下のコード スニペットは、日付フィールドが更新されていなくても失敗します。
var dbModule = db.Modules.FirstOrDefault(v => v.ModuleId == module.ModuleId);
dbModule.Name = module.Name;
//dbModule.Password = module.Password;
//dbModule.Colour = module.Colour;
//dbModule.Modified = module.Modified;
db.SaveChanges();
トレースを見ると、以下のコマンドが表示されているので、日付フィールドが更新されていないことは確かです。
ADO.NET:Execute NonQuery "update [dbo].[Modules]
set [Name] = @0
where ([ModuleId] = @1)"
明確にするために、動作環境は次のとおりです。
- ASP.NET MVC 3
- .NET 4.5
- SQL Server 2012 (エクスプレス)
- 対応する edmx を使用して、データベース ファースト アプローチによって生成されたモデル。
- DateTime モデル フィールドは SQL Server の DateTime 型です
SQL Server プロファイラーを使用しようとしましたが、更新ステートメントを出力して正確な SQL を表示しないため、上記の intellitrace に依存しています。
どんな助けでも大歓迎です。