2009-07-07 37 views
2

我遇到了一個問題,那就是我對來自SQL視圖的實體的CRUD操作沒有調用爲所述操作生成的方法。處理從Linq到SQL視圖的CRUD操作

實施例:

我按在一個項目一個ListView,連接到的LinqDataSource 「刪除」。它會拋出一個錯誤,指出它無法執行操作,因爲它會影響多個基表。沒關係,我明白這一點。我不明白的是爲什麼這個代碼不會對插入運行/刪除:

Public Partial Class Entity 

Private Sub DeleteEntity(instance as Entity) 
    Throw New Exception("TEST") 
End Sub 

End Class 

在調試,它不會對方法打破,所以它不會被調用。我甚至做了一個測試,我通過附加/ DeleteOnSubmit刪除實體,但仍然沒有去。這是一個錯誤還是我沒有處理正確的方法?

注意:是的,我可以處理數據源的OnDeleting事件,取消等(這是我的臨時修復),但我真的想在中心位置捕獲所有刪除操作,無論我如何刪除實體。

回答

0

實體上應該有一個名爲OnValidate(System.Data.Linq.ChangeAction action)的部分方法。處理這可能是你要找的。

Private Partial Sub OnValidate(action As System.Data.Linq.ChangeAction) 
    If action = System.Data.Linq.ChangeAction.Delete 
     Throw New Exception("TEST") 
    End If 
End Sub 
+0

謝謝,這有效,雖然不如重寫不同的CRUD操作那麼好。我想,它會這樣做。 – kamranicus 2009-07-08 13:30:42