我在我的 wcf 服务中使用 TransactionScope 类将我的 wcf 服务中的任何数据库操作分组到一个事务中。我正在使用 sql server 更改数据捕获来捕获相关表上的所有更改。
我希望能够将所有数据库 cdc 更改报告回创建我的事务范围的原始服务操作。
所以说我有一个名为 SavePolicy 的服务操作,它实际上在一个事务范围内执行 3 db 更新。在该范围内,我可以使用以下代码获取事务 ID:
TransactionInformation info = Transaction.Current.TransactionInformation;
transactionId = Guid.Empty == info.DistributedIdentifier ? info.LocalIdentifier : info.DistributedIdentifier.ToString();
这个 id 是否存储在 sql server 中的任何位置?我正在使用实体框架和存储过程来执行常规的 crud 操作。
我可以使用 fn_cdc_get_all_changes_ 之类的 cdc 函数获取所有更改数据,并且 cdc.lsn_time_mapping 表中有一个事务 ID,但看起来这不是一回事。
我希望我可以将 c# 事务范围与数据库事务 ID 或日志序列号以及服务方法名称一起存储,以便我可以按服务操作名称报告 cdc 更改。
任何帮助或想法都会很棒!瑞安