ホームページ >データベース >mysql チュートリアル >Entity Framework を使用して SQL Server にデータを保存すると「検証に失敗しました」という例外が発生するのはなぜですか?
Entity Framework を使用して SQL Server に保存するときに検証に失敗した例外が発生しました
Entity Framework は、次のことを可能にする強力な ORM (オブジェクト リレーショナル マッピング) フレームワークです。開発者は、C# などのオブジェクト指向プログラミング言語を使用してリレーショナル データベースを操作できます。ただし、Entity Framework の操作中に発生する可能性のある一般的な問題の 1 つは、データベースへの変更を保存するときに "1 つ以上のエンティティの検証に失敗しました" という例外です。
例外の理由
このエラー メッセージは通常、データベースに保存されているデータがデータベースの制約に違反していることを示します。この特定のケースでは、データベースとエンティティ クラスの日付と時刻の値に異なるデータ型が使用されていることが問題の原因である可能性があります。
解決策: 適切なデータ型にキャストする
この問題を解決するには、変更を保存する前に、Entity クラスのデータ型をキャストしてデータベースのデータ型と一致させる必要があります。この場合、データベースに保存する前に、Event クラスの DateTime および TimeSpan データ型を Date および Time データ型にキャストする必要があります。
コード内でそれを行う方法は次のとおりです。
// Convert EventDate to Date datatype Event event = this.storeDB.Events.Find(id); event.EventDate = event.EventDate.Date; // Convert StartTime and EndTime to Time datatype event.StartTime = new TimeSpan(event.StartTime.Hours, event.StartTime.Minutes, 0); event.EndTime = new TimeSpan(event.EndTime.Hours, event.EndTime.Minutes, 0); // Save changes to the database this.storeDB.SaveChanges(); RedirectToAction("Index");
データ型を正しい形式にキャストすることにより、データベースに保存されるデータはデータベースの制約に準拠するようになり、「検証に失敗しました」という問題が解決されます。例外。
追加の注意:
データ保存の問題が引き続き発生する場合は、次に示すように、DbEntityValidationException の EntityValidationErrors プロパティを使用して検証エラーに関する詳細情報を抽出できます。提供された回答に記載されています。
以上がEntity Framework を使用して SQL Server にデータを保存すると「検証に失敗しました」という例外が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。