データコンテキストをロールバックして状況を解決しようとしています。1 つの TransactionScope を使用し、2 つの異なるデータベースの 2 つのデータ コンテキスト内で使用しています。
最後に、両方のデータベースに変更を保存したいので、.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();
}
}
}
}