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

我运行单元测试来插入一条记录,并故意插入一个重复项,它会引发正确的错误。现在我需要使用显示此数据的 ObjectDataSource 来处理此错误,例如 OnInserted 和 OnUpdated,但我什至无法达到这一点。当我插入一条记录时,错误助手告诉我 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 回答