我正在尝试通过回滚我们的数据上下文来解决问题。我们在两个不同数据库的两个数据上下文中使用一个 TransactionScope。
最后,我们要在两个数据库上保存更改,因此我们调用 .SaveChanges 但问题是当另一个数据库发生错误时,仍然保存第一个数据库上的更改。
我在那里做错了什么,第一个数据库没有回滚?
谢谢,
雅库布
public void DoWork()
{
using (var scope = new TransactionScope())
{
using (var rawData = new IntranetRawDataDevEntities())
{
rawData.Configuration.AutoDetectChangesEnabled = true;
using (var dataWareHouse = new IntranetDataWareHouseDevEntities())
{
dataWareHouse.Configuration.AutoDetectChangesEnabled = true;
...对数据进行一些操作 - 没有调用 savechanges()。
// Save changes for all items.
if (!errors)
{
// First database save.
rawData.SaveChanges();
// Fake data to fail the second database save.
dataWareHouse.Tasks.Add(new PLKPIDashboards.DataWareHouse.Task()
{
Description = string.Empty,
Id = 0,
OperationsQueue = new OperationsQueue(),
Queue_key = 79,
TaskTypeSLAs = new Collection<TaskTypeSLA>(),
Tasktype = null
});
// Second database save.
dataWareHouse.SaveChanges();
scope.Complete();
}
else
{
scope.Dispose();
}
}
}
}