我的问题是transaction
工作不正常,如果在运行期间发生异常,它不应该为一个表保存数据trascation
当所有表格都正确时,只保存数据。
考虑以下:
databaseEntites objEntites = null;
using (objEntites = new databaseEntites())
{
objEntites.Connection.Open();
using (System.Data.Common.DbTransaction transaction =
objEntites.Connection.BeginTransaction())
{
try
{
customer objcust=new customer();
objcust.id=id;
objcust.name="test1";
objcust.email="test@gmail.com";
objEntites.customer.AddObject(objcust);
order objorder=new order();
objorder.custid=objcust.id;
objorder.amount=500;
objEntites.order.AddObject(objorder);
objEntites.SaveChanges();
transaction.Commit();
}
catch()
{
transaction.Rollback();
}
}
}
在这个我的第二个表列名不正确并且SaveChanges()
给出了例外。
当我看到数据库并发现它为客户表保存了错误的数据时,我希望当所有表都正确时数据将进入客户表,并且此 savechanges 要么保存所有表,要么不保存任何表。
为此,我也尝试了TransactionScope
using (TransactionScope tscope =
new TransactionScope(TransactionScopeOption.RequiresNew))
{
......all the code here....
objEntites.SaveChanges(false);
tscope.Complete();
objEntites.AcceptAllChanges();
}
但它给出了与上述相同的问题。
提前致谢。