C# Oracle transactions

本文关键字:transactions Oracle | 更新日期: 2023-09-27 18:15:29

如何在单个事务中插入记录及其子记录?

例如,我有一个名为Requisition (IdRequisition, Description, RegisterDate)和RequisitionRequirement (IdRequisitionRequirement, IdRequisition, DocumentName, DeliveryDate, LimitDate)的类,我需要插入Requisition并通过outparameter获得IdRequisition,然后在单个事务中插入必须与Requisition相关的RequisitionRequirements列表,并确保如果RequisitionRequirement中的一个插入失败,请执行回滚。

我不知道什么是正确的形式去做,如果处理事务从c#与cmd.Connection.BeginTransaction()或其他方式。

我正在使用Linq到实体,我们没有问题,但目前的应用程序使用Oracle和存储过程,我是在这种情况下的新手。

对不起,我的英语不好,但我也在学习!

C# Oracle transactions

只需将代码包装在事务作用域中即可。在调用范围内的存储进程时,不要关闭连接。顺便说一句,考虑使用函数来返回IdRequisition,而不是使用out参数。

using (TransactionScope scope = new TransactionScope())
{
    // Save Requisition and get IdRequisition 
    // Save RequisitionRequirements 
}

首先,您必须打开连接,然后通过调用connection.BeginTransaction()方法检索事务实例。

看一下ODP。NET文章-选择ODP。. NET事务类型适合您的业务规则。