.net 处理Linq到SQL视图的CRUD操作

.net 处理Linq到SQL视图的CRUD操作,.net,vb.net,linq,linq-to-sql,views,.net,Vb.net,Linq,Linq To Sql,Views,我遇到了一个问题,我对一个源于SQL视图的实体的CRUD操作没有调用所述操作的生成方法 例如: 我在连接到LinqDataSource的项目的列表视图中按“Delete”。它抛出一个错误,说明它无法执行该操作,因为它会影响多个基表。没关系,我明白。我不明白的是为什么这段代码不能在insert/delete上运行: Public Partial Class Entity Private Sub DeleteEntity(instance as Entity) Throw New Exce

我遇到了一个问题,我对一个源于SQL视图的实体的CRUD操作没有调用所述操作的生成方法

例如:

我在连接到LinqDataSource的项目的列表视图中按“Delete”。它抛出一个错误,说明它无法执行该操作,因为它会影响多个基表。没关系,我明白。我不明白的是为什么这段代码不能在insert/delete上运行:

Public Partial Class Entity

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

End Class
在调试中,它不会在方法上中断,因此不会被调用。我甚至做了一个测试,通过附加/DeleteOnSubmit删除了实体,但仍然没有执行。这是一个错误还是我处理的方法不对


注意:是的,我可以处理数据源的OnDeleting事件、cancel等(这是我的临时修复),但我确实希望在中心位置捕获所有删除操作,无论我如何删除实体。

在您的实体上应该有一个名为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

实体上应该有一个名为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

谢谢,这是有效的,尽管没有覆盖不同的CRUD操作那么好。我想会的。是的,不用测试变更操作会更好,但这是我能找到的最接近于您希望的工作方式的存储过程。我还使用自定义存储过程来执行CUD操作,因为它工作得更好,并且还可以从LinqDataSource控件和编程操作处理这些操作。谢谢,这很有效,尽管没有覆盖不同的CRUD操作那么好。我想会的。是的,不用测试变更操作会更好,但这是我能找到的最接近于您希望的工作方式的存储过程。我还使用自定义存储过程来执行CUD操作,因为它工作得更好,并且还可以从LinqDataSource控件和编程操作处理这些操作。