c# - 是否可以使用 WCF 实现长时间运行的多次写入事务?

标签 c# sql-server oracle wcf distributed-transactions

使用 WCF 和 Microsoft 分布式事务协调器,是否可以针对单个数据库实现长时间运行的事务?我绘制了相关场景的简化版本。

交易是否必须在时间限制内发生?

假设数据库是 SQL Server 或 Oracle,在事务期间是否会发生锁定?它是行级还是表级?

enter image description here

最佳答案

数据库事务应该是短暂的。参见例如 Are long-living transactions acceptable?

因此,虽然 WCF 和 DTC 允许您跨机器并通过 SOAP 调用分发事务,但这对于您所描述的场景来说并不是一个好主意。

改为使用补偿事务逻辑,例如Emp3 创建失败时删除插入的 Emp1 和 Emp2。或者手动将插入的 Emp1 和 Emp2 行标记为仍在事务中,直到它们全部被成功写入。或者在 WCF 服务中收集操作,然后在所有信息可用时(以事务方式)将它们提交给数据库。

哪种解决方案最好取决于您的用例的详细信息。

关于c# - 是否可以使用 WCF 实现长时间运行的多次写入事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702436/

相关文章:

c# - 用文件 C# 填充锯齿状数组

c# - 为什么我不能用扩展方法中的泛型类型变量替换 IEnumerable<T>?

c# - 从 sql server 获取顶部(开始号,结束号)行

sql - Oracle SELECT - 一列的别名作为另一列的输入

Oracle 时区 - 巴西 2018 年更改

c# - 如果我首先获得属性, Entity Framework 只会将相关实体属性设置为 "null"

c# 从 ArrayList 获取对象属性

sql-server - 在 SSAS 中为 ROLAP 和 MOLAP 建模不规则层次结构的最佳方法是什么?

sql-server - 尝试查找特定表和列时无法解决排序规则冲突

java - 使用 Oracle 数据库数据的 Primefaces 饼图