質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

1回答

3452閲覧

EntityFrameworkにおけるPostgreSQLのエラーコード取得方法

taka21th

総合スコア6

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/04/03 00:52

###前提・実現したいこと
お世話になります。

当方、以下の環境で開発を行っています。

言語 :C#
データベース :PostgreSQL

現在C#とPostgreSQLの連携にEntityFrameworkを使用しています。

EntityFrameworkのSaveChanges()にてDB更新系の処理を行っています。
更新時に起きたエラー(異常終了系)を、PostgreSQLのエラーコードにて振り分けを行いたいと思っていて、
「System.Data.Entity.Infrastructure.DbUpdateConcurrencyException」にて
例外をCatchしています。

ただ、このExceptionではPostgreSQLのエラーコードが取得できずに困っています。
上記環境でPostgreSQLのエラーコードを取得する方法はありますでしょうか?

もし同じような環境にて開発を行ったことがある、
こうすればいいのでは?等々の知識がありましたら
ご回答の程、よろしくお願い致します。

出来る限り早めに解決させたいため、
早めの回答であると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

環境が用意できないので、正解につながるかどうかわかりませんが……。

(1)InnerExceptionを深く確認する
System.Data.Entity.Infrastructure.DbUpdateConcurrencyException のプロパティ InnerException に、それらしい情報は入っていませんか?
InnerException はその中にもプロパティ InnerException を持っていますので、 InnerException が空になるまでひたすらたどってみてください。

(2)DbContextConfiguration.ValidateOnSaveEnabledを変更する
DbContextConfiguration.ValidateOnSaveEnabledtrue になっていますか?だとしたら、 false に変えてみてください。
例外が System.Data.Entity.Infrastructure.DbUpdateConcurrencyException ではなくなるかもしれません。その例外および InnerException をたどると、何かわかるかもしれません。

投稿2017/04/20 07:22

alg

総合スコア2019

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taka21th

2017/04/20 12:15

ご回答いただき、大変ありがとうございます。 上記2点は既に試してみました。 InnerExceptionを辿っても、排他関連は拾うことができませんでした。 SQLの記述エラー等はきちんとエラーコードとして拾うことができたのですが・・・。 現在は別方法でなんとか排他をキャッチするようにしています。 引き続き、何か分かることがございましたら ご回答いただければと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問