Ошибка EF Core SaveChanges после явной транзакцииC#

Место общения программистов C#
Ответить
Anonymous
 Ошибка EF Core SaveChanges после явной транзакции

Сообщение Anonymous »

У меня есть код, который пытается выполнить определенный набор операций внутри явной транзакции, а затем остальные операции обычным образом.
Транзакция проходит нормально и получает утилизирован. Затем, когда я пытаюсь сделать обновление за пределами уже удаленной транзакции и вызвать _dbContext.SaveChangesAsync(), мне выдается эта ошибка:

SqlException : Невозможно выполнить SAVE TRANSACTION, если нет активной транзакции

Я больше не хочу использовать никакую транзакцию. Я думаю, что что-то изменилось во внутреннем состоянии DbContext.
Я пытался очистить ChangeTracker в надежде, что он сбросит внутреннее состояние, но это не сработало. В настоящее время удаление не является вариантом, так как я использую абстракцию IUnitOfWork с областью действия, введенной зависимостями, поверх DbContext.
Использование SQL Server и Entity Framework Core 8.
Идиоматический пример кода:
public async Task DoSomethingInTransactionAsync()
{
using var transaction = await _dbContext.Database.BeginTransactionAsync();
try
{
// Perform some operations
var entity = new Model { Name = "TransactionEntity" };
_dbContext.Models.Add(entity);
await _dbContext.SaveChangesAsync();

// Commit the transaction
await transaction.CommitAsync();
return entity;
}
catch
{
await transaction.RollbackAsync();
throw;
}
}

public async Task UpdateAnotherEntityAsync()
{
// Call the method with the transaction
var model = await DoSomethingInTransactionAsync();

// Perform another operation without explicit transaction
var anotherEntity = await _dbContext.OtherEntities.FindAsync(1);
anotherEntity.Name = "UpdatedName";
await _dbContext.SaveChangesAsync(); // **ERROR OCCURS HERE**
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... ransaction
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»