考虑下面给出的示例代码片段。
当我最后没有写transaction.Complete();
时,对数据库所做的更改是否会被还原?
using (var transaction = new System.Transactions.TransactionScope())
{
var database = new DatabaseContext();
var userA = database.Users.Find(1);
var userB = database.Users.Find(2);
userA.Name = "Admin";
database.SaveChanges();
userB.Age = 28;
database.SaveChanges();
transaction.Complete(); // Do changes done by database.saveChanges(); gets reverted if this statement is ommited ?
}
先谢谢。
答案 0 :(得分:2)
是
从这里......
// The Complete method commits the transaction. If an exception has been thrown,
// Complete is not called and the transaction is rolled back.
scope.Complete();
https://msdn.microsoft.com/en-us/library/ee818746%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
答案 1 :(得分:2)
是的。
但你为什么需要呢?在给定的示例中,一个简单的数据库上下文可以满足您的要求。
如果下次数据库在该特定位置打开新连接时未调用InputExt.prototype.info = function() {
console.log(this);
}
var element = document.body.appendChild(new InputExt());
element.info();
,则不会包含旧数据。
我对交易范围有点谨慎......