2012-07-26 125 views
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-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未被用户代码处理。我需要一个尝试......赶上那里吗? (我曾尝试过,但无济于事)。

+0

这是一个提示吗? – 2012-07-26 19:16:25

回答

0

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

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

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

》 

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

+0

我以为ASP.Net中我不应该使用try/catch。我应该让异常流入Global.asax,以便在整个应用程序中进行处理。另外,它似乎与我上面发布的代码没有多大关系。任何错误都会停止应用程序并在Visual Studio中打开错误助理,这使我认为这是配置问题的一些方面。我的错误配置是非常基本的: – 2012-07-28 18:53:15