2009-07-07 2 views
2

Я столкнулся с проблемой, когда мои операции CRUD над сущностью, полученной из SQL View, не вызывают сгенерированные методы для указанных операций.Обработка операций CRUD для представления Linq to SQL

Пример:

жму "Удалить" в ListView на элемент, подключенный к LinqDataSource. Это порождает ошибку, говорящую, что она не может выполнить операцию, потому что она затрагивает несколько базовых таблиц. Все в порядке, я это понимаю. То, что я не понимаю, почему этот код не будет работать на вставки/удаления:

Public Partial Class Entity 

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

End Class 

В отладки, он не сломается на методе, так что это не называется. Я даже сделал тест, где я удалил объект, добавив/DeleteOnSubmit и все еще не-go. Является ли это ошибкой или я не обрабатываю правильный метод?

Примечание: Да, я могу обработать событие OnDeleting источника данных, отменить и т. Д. (Это мое временное исправление), но мне бы очень хотелось, чтобы ВСЕ удалять операции в центральном месте независимо от того, как я удаляю объект ,

ответ

0

Должен быть частичный метод на вашем объекте под названием OnValidate (действие System.Data.Linq.ChangeAction). Обработка этого может быть тем, что вы ищете.

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

+0

Да, было бы лучше не тестировать ChangeAction, но это было самое близкое, что я мог бы найти, который будет работать более или менее так, как вам хотелось бы. –

+0

Я также закончил использование пользовательских хранимых процедур, выполняющих операции CUD, так как это улучшилось, а также обработало эти операции как из элементов управления LinqDataSource, так и из программных операций. – kamranicus