具有实体框架和存储库模式的自定义异常

时间:2012-07-26 18:07:16

标签: asp.net entity-framework error-handling

我正在关注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-layer-and-unit-tests

我创建了一个自定义错误,以防止在插入和更新时出现重复记录

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未被用户代码处理。我需要试试......赶上吗? (我确实试过没有用)。

1 个答案:

答案 0 :(得分:0)

我认为你需要在你提出的try catch块中提到的事件引用的方法中包装你的异常。您应该像现在这样包装现有代码

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

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

》

如果你发布你的事件处理代码和aspx我可以更具体。请原谅任何错误都写在我的手机上。