对数据库多张表进行操作时一般都要使用事务;如果同时对两张表进行新增时,我要它们一起新增进去,如果第二张表新增报了异常,没有把数据新增进去,但是我第一张表新增进去了,我就想把第一张刚刚新增的数据撤下来(两张表的数据共同进退),所以这里的事务就可以解决这个问题;
先添加应用:
事务结构:
using (TransactionScope Tran= new TransactionScope()) {
//执行代码块
Tran.Complete();
}
代码例子:
using (TransactionScope scope = new TransactionScope())
{
Models.SYS_UserType modelsUserType = new Models.SYS_UserType();
modelsUserType.UserType = Name.Trim();
modelsUserType.Describe = Describe.Trim();
modelsUserType.FoundTime = DateTime.Now.ToString();
myModels.SYS_UserType.Add(modelsUserType);
myModels.SaveChanges();
var XinZengID = modelsUserType.UserTypeID;//获取刚刚新增数据的ID
List<Models.PW__Jurisdiction> myAL = new List<Models.PW__Jurisdiction>();
for (int d = 0; d < ints.Length; d++)
{
Models.PW__Jurisdiction modelsJurisdiction = new Models.PW__Jurisdiction();
modelsJurisdiction.ModularDetailID = Convert.ToInt32(ints[d]);
modelsJurisdiction.UserTypeID = XinZengID;
myAL.Add(modelsJurisdiction);
}
myModels.PW__Jurisdiction.AddRange(myAL);
myModels.SaveChanges();
scope.Complete();
}
这里要新增两张表的数据,在using 包括的代码中如果有抛出异常,那它就会回滚到执行代码块之前;
注意:在执行到第一张表新增完成的时候,即myModels.SaveChanges();之后,数据库对应的表是无法进行操作的;
无法对数据库进行刷新;