我有以下兩個表LINQ to SQL多個提交,我應該如何實現事務?
表1: PK(INT) TOTALCOUNT(INT)
表2: PK(INT) FK(INT)(與PK表1中的關係) 計數
我在第一個表中插入一條記錄,以獲得一個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中。 –
看看http://msdn.microsoft.com/en-us/library/bb738523.aspx,關於如何使用它(TransactionScope)有一個非常有用的例子, – a1ex07