2012-07-26 124 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