ホームページ >データベース >mysql チュートリアル >Entity Framework を使用して SQL Server にデータを保存すると「検証に失敗しました」という例外が発生するのはなぜですか?

Entity Framework を使用して SQL Server にデータを保存すると「検証に失敗しました」という例外が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 08:17:40635ブラウズ

Why Am I Getting a

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。