ユニーク制約の例外が発生した場合、.NETコアでUIにどのようにメッセージしますか。 MVC/RazorのアプローチではなくJSONを返したい.NETコアのUIにUNIQUE制約の例外を送信します。
答えて
私の記事Catching Bad Data in Entity Frameworkを見ていると思います。ここでは、SQLエラーをキャッチしてEFコアの検証エラーにする方法について説明します。質問であなたのフォローへの答えで
UPDATE
私は私が書いている本は、Entity Framework Core in Actionに関連するコードにあなたを指すことができます。ここでは、SaveChangesSqlCheck
というメソッドを作成しました。このメソッドには、SQLエラーをチェックするコードが含まれています。 SaveChanges
を呼び出す代わりにこのメソッドを使用すると、ValidationResult
が返されます。
私の本はgit repositoryに関連しています。ここでは、私が本で示したすべてのことについて単体テストがあります。以下は、SaveChangesSqlCheck
、SaveChangesSqlCheck
というコード自体の呼び出し方法を確認するための単体テストへのリンクです。
- ユニットテスト:https://github.com/JonPSmith/EfCoreInAction/blob/Chapter10/Test/UnitTests/DataLayer/Ch10_CatchSqlError.cs#L59-L89
SaveChangesSqlCheck
コード:https://github.com/JonPSmith/EfCoreInAction/blob/Chapter10/DataLayer/EfCode/SaveChangesSqlCheck.cs- ユニークなエラーをキャッチする方法:https://github.com/JonPSmith/EfCoreInAction/blob/Chapter10/DataLayer/EfCode/SqlErrorFormatters.cs
注:あなたは特別な方法でユニーク制約名をフォーマットする必要があります - 例についてはhttps://github.com/JonPSmith/EfCoreInAction/blob/Chapter10/Test/Chapter10Listings/EfCode/Configuration/MyUniqueConfig.csを参照してください。
あなたが記事に示すコードを使用する予定の場合は、すべてを行う必要がJSONにそれを回すためにJsonConvert.SerializeObject(errors)
を使用しています。私はいくつかのコードを含んでいるので、json出力がどのように見えるかを見ることができます。
var error = new ValidationResult("error message");
var jsonList = JsonConvert.SerializeObject(error,
new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented });
このJSON出力は、私はそれが役に立てば幸い
{
"MemberNames": [],
"ErrorMessage": "error message"
}
だろう。
ありがとう!それは素晴らしい作品です! –
- 1. UNIQUE制約にHibernate
- 2. PostgreSQLのUNIQUE制約は、ドッカーコンテナ
- 3. ジャンゴloaddataのUNIQUE制約は
- 4. .NETは、コア・アイデンティティ・RoleManager例外
- 5. MySQL PRIMARY KEYとUNIQUE制約
- 6. Hibernate @OneToManyとUNIQUE制約
- 7. の.Net Entity Frameworkの紹介FOREIGN KEY制約例外
- 8. IntegrityError UNIQUE制約のテストに失敗しました
- 9. .NET - 電子メールを送信する際の例外
- 10. 一意制約例外(SQLIntegrityConstraintViolationException)
- 11. Hibernateユニーク制約例外キャッチ
- 12. 制約原因例外
- 13. O.R.M. FOREIGN KEY制約例外
- 14. .NETコア送信者から.NET 4.6ハンドラにAzure ServiceBusでメッセージを送信
- 15. UNIQUE制約に失敗しました:sqliteデータベース:android
- 16. django UNIQUE制約に失敗しました。エラー
- 17. onstraint failed UNIQUE制約に失敗しました
- 18. UNIQUE制約がdjangoでエラーに失敗しました
- 19. UNIQUE制約に失敗しました:music_playlist.owner_id
- 20. UNIQUE制約に失敗しました - Django
- 21. Django - UNIQUE制約に失敗しました:auth_user.username
- 22. Entity Frameworkモデルfirst:プログラムでUNIQUE制約を作成します。
- 23. MySQLでは、行にUNIQUE制約を設定できますか?
- 24. SQL - のみUNIQUEまたはPRIMARY KEY制約が計算列に
- 25. Python/Django処理エラーUNIQUE制約
- 26. ServiceAuthorizationManagerの例外は常にXML応答を送信します
- 27. ジャンゴUNIQUE制約が失敗しました:webapp_post.slug
- 28. android SQLiteConstraintException UNIQUE制約が失敗しました
- 29. JPAの@Column(unique = true)例外の処理
- 30. PostgreSQL EXCLUDEの範囲制約とUNIQUE制約の組み合わせ
実際に何をしたいですか? sqlからエラーをログに記録しようとしていますか? sql文をtry-catchブロックに入れ、catchブロックの解析エラーをjsonに入れます。 – HEGDE
だから、私のdBContextファイルの中でLINQ/FluentAPIを使用しています。私は:modelBuilder.Entityを持っています。() .HasAlternateKey(p => p.ProductName); –
そして、私のコントローラファイルは以下を持っています: try { await _context.SaveChangesAsync(); }キャッチ(DbUpdateConcurrencyException) {}電位キャッチDbUpdateExceptionかもしれないが、UNIQUE contraintフィールドに書き込まれるの複製を防止するときにトリガーしない取得どちら。 –