1つの非同期メソッドupdateUsersを使用するWCFサービスがあります。ユーザー名は一意であるため、変更を保存するときに、新しいユーザーに割り当てられたユーザー名が存在する場合は、UpdateExceptionが発生します。
カスタム例外UniqueKeyUsersExceptionを作成します。この例外には、IDを持つint64と2つの文字列(1つはユーザー名用、もう1つはパスワード付き)の3つのプロパティがあります。現時点では、データベースのテーブルにあるすべてのフィールドがあります。
この例外は、Serializableとして装飾され、ISerializableインターフェイスを実装します。これで、クライアントに情報を送ることができます。このインターフェイスを実装しない場合、クライアントに例外が到着しますが、すべてのプロパティがnullになります。
すべて正常に動作し、クライアントは存在するユーザー名の情報を含むFaultExceptionを受け取ります。
ただし、Usersタイプの例外で、外部ライブラリにある自己追跡エンティティである1つのプロパティのみを使用する可能性を考えています。アイデアは、データベースに存在するレジスタを持つエンティティをクライアントに送信することです。これにより、ユーザーは既存のユーザーの情報を表示することを決定できます。このようにして、ユーザーは新しいクエリを実行するために必要なものを保存します。3つのプロパティを使用して例外を送信する場合は、新しいオブジェクトUsersを作成し、その情報を例外からUsersエンティティに変換する必要があります。
私の問題は、FaultExceptionをスローしたときにUsers(STE)タイプのプロパティを例外に追加すると、失敗し、サービスがクラッシュすることです。シリアル化の理由である可能性があると思います。おそらく、ISerializeの実装で、STEのシリアル化を追加する必要があります。
ただし、STEにはデータベースの情報だけでなく、エンティティやその他のプロパティの追跡も含まれているため、多くの作業が必要になります。
だから私の質問は、例外のプロパティとしてSTEを使用する方法が存在するかどうか、または基本的なタイプしか使用できないかどうかです。
ありがとう。ダイムロック。