在SQL事务

时间:2016-09-20 07:26:42

标签: c# transactions com sap

我们正在使用由SQL数据库支持的SAP Business One。对数据库的所有脚本编写/更新都必须通过.Net / C#中的托管COM进行。

COM本身看起来像是一堆蠕虫:每个人似乎都对是否需要明确释放对象有一个意见,如果是这样,或者你可以将它留给垃圾收集器(或强制使用GC)。收集())。

我们想要同时对多个文档(SQL表)进行更新/插入,因此我们使用事务来执行此操作,其工作原理与它们中的相同SQL。

问题是:我们应该在数据库事务中处理/释放COM对象,还是应该推迟这一点,并且可能会丢失对COM对象的引用/导致内存泄漏? 以这种方式释放COM对象的性能损失/时间是多少?

TL; DR :在数据库事务中是否应释放COM对象,还是应该延迟/忽略它?

// pseudocode - greatly simplified

// case 1 - current setup
Transaction.Start();
comObject.subObject = new comSubOject();
comObject.Add();
Marshall.ReleaseComObject(comObject);
Marshall.ReleaseComObject(subObject);
Transaction.Commit();

// case 2 - ideal case, much harder to structure code this way
Transaction.Start();
comObject.subObject = new comSubOject();
comObject.Add();
Transaction.Commit();
Marshall.ReleaseComObject(comObject);
Marshall.ReleaseComObject(subObject);

0 个答案:

没有答案