【发布时间】:2011-08-24 19:20:10
【问题描述】:
我有以下两张表
表 1: PK(整数) 总数(整数)
表 2: PK(整数) FK (int)(与表1中PK的关系) 数
我在第一个表中插入一条记录,以获得 PK。然后,当我从某个源获取数据并将其转储到表 2 中时,我将使用上一个表中的 PK 填充 FK。
我想在我的代码中实现事务。当插入表 2 失败时,我如何能够回滚表 1,因为表 1 基本上已经发出了提交?
我写了一些代码来帮助说明我在做什么
using (DeviceDataContext context = new DeviceDataContext())
{
tgdd = new Data();
context.Datas.InsertOnSubmit(tgdd);
context.SubmitChanges();
int pk = tgdd.PK;
int count = 0;
foreach (…)
{
count += 1;
tgd = new Data2();
tgd.FK = pk;
tgd.count = count;
context.Datas2.InsertOnSubmit(tgd); //if this crashes, I want to roll
//back what happened to table 1(Datas)
}
}
这段代码我写的很快,如有逻辑错误,请忽略。
那么交易会帮助我做我想做的事吗?
【问题讨论】:
-
您应该能够将其包装在 TransactionScope 中。
-
看看msdn.microsoft.com/en-us/library/bb738523.aspx,有一个非常有用的例子说明如何使用它(TransactionScope)
标签: c# linq-to-sql transactions