به نظرم دلیل اصلی استفاده از transaction حفظ یکپارچگی دیتا و جلوگیری از Concurency هست. طی این حالت تا زمانی که transaction.Commit(); نشه اطلاعات ذخیره نخواهد شد.
using (var transaction = context.Database.BeginTransaction())
{
try
{
if (CodeList.Count > 0)
{
//Your codes
var _obj = JsonConvert.DeserializeObject<Db_Model.FetchData>(JsonConvert.SerializeObject(fetchData));
context.FetchDatas.Add(_obj);
context.SaveChanges();
_Result = _obj.ID;
for (int i = 0; i < CodeList.Count; i++)
{
// Other codes
var subobj = JsonConvert.DeserializeObject<Db_Model.Vcode>(JsonConvert.SerializeObject(code));
context.Vcodes.Add(subobj);
}
context.SaveChanges();
transaction.Commit();
}
}
catch (Exception err)
{ transaction.Rollback(); }
}