我正在使用LINQ To SQL並調用存儲過程來插入新行。LINQ To SQL中的交易
- 下面的代碼是否顯示了一組適當的步驟?
- 我只想插入(其他四)如果所有四個插入通過否則回滾所有四個插入。
public bool InsertNewInquiry(Inquiry inq)
{
using (var transaction = new TransactionScope())
{
using (DataContextDataContext dc = conn.GetContext())
{
foreach (Officer po in inq.Recipients)
{
int results1 = (int)dc.**spOffice_Insert**(po.Id,po.Name).ReturnValue;
}
foreach (Lookups tags in inq.Tags)
{
int results2 = (int)dc.**spTags_Insert**(po.Id,po.Name).ReturnValue;
}
foreach (Phone phone in inq.Phone)
{
int results3 = (int)dc.**spPhone_Insert**(po.Id,po.Name).ReturnValue;
}
int results4 = (int)dc.spInquiry_Insert(
inq.Id
,inq.StatusId
,inq.PriorityId
,inq.Subject).ReturnValue;
if (results1 != 0 && results2 != 0 && results3 != 0 && results4 != 0)
{
transaction.Complete();
return true;
}
return false;
/* old code:
transaction.Complete();
if (results == 0)
return false;
else
return true; */
}
}
}
我已經嘗試了上面的代碼,但它不插入插入的foreach(結果:1 ......結果3)
任何想法,根據需要,我可以如何使這項工作?
這看起來是正確的,但我不知道他們是否想回滾,如果任何*的ReturnValue'數字是0. – 2010-08-17 18:39:35
我認爲如果任何結果回來0你會想要回滾。 – Kelsey 2010-08-18 00:12:48