如标题所示,以下代码是否呈酸性,例如:如果我调用SaveChanges,将执行所有Product.Add INSERT语句(如果有错误,则回滚)。
using(DBEntities ctx = new DBEntities())
{
for(int i = 0; i < 10; i++)
{
ctx.Products.Add(new Product("Product " + (i + 1)));
}
ctx.SaveChanges();
}
MSDN州:
SaveChanges在交易中运作。 SaveChanges将回滚 该事务并抛出异常,如果有任何脏 ObjectStateEntry对象不能保留。
然而,在查看分析器时,情况似乎并非如此。我需要使用TransactionScope包装块吗?
答案 0 :(得分:2)
using(DBEntities ctx = new DBEntities())
{
for(int i = 0; i < 10; i++)
{
ctx.Products.Add(new Product("Product " + (i + 1)));
}
ctx.SaveChanges();
}
此SaveChanges()调用将自动进入事务。您不必将其包装在新的事务管理器下。