ObjectDataSource的DeleteMethod中的存储过程

本文关键字:存储过程 DeleteMethod ObjectDataSource | 更新日期: 2024-09-25 22:42:26

我创建了一个从表中删除日志的存储过程(deleteLogs),并从我为其创建的DeleteMethod中运行它。我的问题是,该方法中还有另一个存储过程(recordLogs)根本不运行。

<asp:ObjectDataSource ID="LogsDataSource1" runat="server" SelectMethod="GetLogs" UpdateMethod="UpdateLog" DeleteMethod="DeleteLog" TypeName="ServiceData">
 <DeleteParameters>
  <asp:Parameter Name="Id"/>
 </DeleteParameters>
</asp:ObjectDataSource>
public void DeleteLog(int Id)
{
    getDataContext.deleteLogs(Id);  
    getDataContext.recordLogs(Id);      
}

然而,如果我交换他们的订单,它可以很好地

public void DeleteLog(int Id)
{
    getDataContext.recordLogs(Id);
    getDataContext.deleteLogs(Id);        
}

看起来条目一被删除,就会退出函数。

ObjectDataSource的DeleteMethod中的存储过程

recordLogs函数似乎依赖于deleteLogs删除的值。

另外,考虑使用TransactionScope()包装这两个方法:

public void DeleteLog(int Id)
{
    using (var tran = new TransactionScope())
    {
        getDataContext.recordLogs(Id);
        getDataContext.deleteLogs(Id);
        tran.Complete();
    }
}