0

私はガイドとしてこのAsp .Netチュートリアルに従っています:

http://www.asp.net/web-forms/tutorials/continuing-with-ef/using-the-entity-framework-and-the-objectdatasource-control-part-2-adding-a-business-logic-層と単体テスト

挿入および更新時にレコードが重複しないようにカスタム エラーを作成しました

Public Class DuplicateAgencyException
Inherits Exception

Public Sub New(ByVal message As String)
    MyBase.New(message)
End Sub
End Class

挿入または更新時に重複をチェックする検証メソッドを作成しました。

Public Sub ValidateAgencyName(ByVal agency As agency_temp)
        If Not IsNothing(agency) Then
            Dim duplicateAgency As agency_temp = AgencyRepository.GetAgencyByName(agency.agency_name).FirstOrDefault()
            If Not IsNothing(duplicateAgency) AndAlso duplicateAgency.agency_id <> agency.agency_id Then
                Throw New DuplicateAgencyException(String.Format("Agency: {0} already exists.", duplicateAgency.agency_name))
            End If
        End If
    End Sub

単体テストを実行してレコードを挿入し、意図的に複製を挿入すると、正しいエラーがスローされます。ここで、OnInserted や OnUpdated など、このデータを表示する ObjectDataSource でこのエラーを処理する必要がありますが、その点にさえ到達できません。レコードを挿入すると、DuplicateAgencyException がユーザー コードによって処理されなかったことを示すエラー アシスタントが表示されます。試してみる必要がありますか...キャッチしますか?(私は無駄にそれを試みました)。

4

1 に答える 1

0

あなたが提案するように、try catchブロックで言及したイベントによって参照されるメソッド内に例外をラップする必要があると思います。そのように既存のコードをラップする必要があります

MethodName(params)
《
try 《 /// existing code 

》
catch (ExceptionType ex) 《
/// error handling code
》

》

イベント処理コードと aspx を投稿すると、より具体的になる可能性があります。私の電話でこれを書いた誤りを許してください。

于 2012-07-26T21:19:08.437 に答える