【问题标题】:Handling CRUD Operations for a Linq to SQL View处理 Linq to SQL 视图的 CRUD 操作
【发布时间】:2009-07-07 17:30:13
【问题描述】:

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

例子:

我在连接到 LinqDataSource 的项目上的 ListView 中按“删除”。它会抛出一个错误,指出它无法执行该操作,因为它会影响多个基表。没关系,我明白了。我不明白的是为什么这段代码不能在插入/删除时运行:

Public Partial Class Entity

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

End Class

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

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

【问题讨论】:

    标签: .net vb.net linq linq-to-sql views


    【解决方案1】:

    您的实体上应该有一个名为 OnValidate(System.Data.Linq.ChangeAction action) 的部分方法。处理这可能是您正在寻找的。​​p>

    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 控件和编程操作的这些操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多