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和存储过程,我是在这种情况下的新手。
对不起,我的英语不好,但我也在学习!
只需将代码包装在事务作用域中即可。在调用范围内的存储进程时,不要关闭连接。顺便说一句,考虑使用函数来返回IdRequisition,而不是使用out参数。
using (TransactionScope scope = new TransactionScope())
{
// Save Requisition and get IdRequisition
// Save RequisitionRequirements
}
首先,您必须打开连接,然后通过调用connection.BeginTransaction()
方法检索事务实例。
看一下ODP。NET文章-选择ODP。. NET事务类型适合您的业务规则。