J'utilise LINQ to SQL et appeler des procédures stockées pour insérer les nouvelles lignes. Le code ci-dessous illustre-t-il un ensemble approprié d'étapes?Transactions dans LINQ to SQL
- Je veux insérer (autres fours) que si les quatre inserts sont passés autrement rollback les quatre inserts.
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; */
}
}
}
J'ai essayé le code ci-dessus, mais il n'insère pas l'insert foreach (Résultats1 ... résultats3)
Toute idée comment je peux faire ce travail comme vous le souhaitez?
Cela semble à peu près juste, même si je me demande s'ils veulent faire reculer si * une * 'des numéros ReturnValue' est 0. –
Je pense que si les résultats reviennent 0 vous voulez rollback. – Kelsey