我在C#中编写了一个程序,用于从表中读取数据,对其进行转换并将其写入其他四个表。
三个目标表的非空整数指向最后一个目标表上的主键。我称之为V。
当我的程序将一大块数据读入内存并对其进行转换时,它将使用SqlBulkCopy写入表V.完成后,它将使用select语句来检索主键。
这些主键将正确分配给内存中的其他三个目标表。最后,在一个事务中使用SqlBulkCopy将最后三个表写入数据库。
但是,如果程序成功写入表V,但无法写入其他三个表,则会出现一堆脏数据。
我是否能以某种方式将进入表V的数据与主键映射到围绕所有代码的事务中?
如果有任何建议可以解决我的问题,我将非常高兴。
答案 0 :(得分:0)
在三个表的列上放置一个外键,这些列引用表V上的主键。这将确保没有脏数据。您可能需要重新编写逻辑和写入表的顺序,但添加外键应该清理过程并使其在重构后更顺畅。