【问题标题】:Custom Exception with Entity Framework and Repository Pattern实体框架和存储库模式的自定义异常
【发布时间】:2012-07-26 18:07:16
【问题描述】:

我按照这个 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 未被用户代码处理。我需要尝试...赶上吗? (我确实尝试过,但无济于事)。

【问题讨论】:

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


    【解决方案1】:

    我相信您需要按照您的建议将异常包装在您在 try catch 块中提到的事件所引用的方法中。您应该像这样包装现有代码

    MethodName(params)
    《
    try 《 /// existing code 
    
    》
    catch (ExceptionType ex) 《
    /// error handling code
    》
    
    》
    

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

    【讨论】:

    • 我认为在 ASP .Net 中我不应该使用 try/catch。我应该让异常流向 Global.asax,以便在那里为整个应用程序处理。此外,它似乎与我上面发布的代码无关。任何错误都会停止应用程序并在 Visual Studio 中打开错误助手,这让我认为这是某种配置问题。我的错误配置非常基本:
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多