Как получить последние значения из базы данных, когда происходит dbupdateconcurrencyException?MySql

Форум по Mysql
Ответить
Anonymous
 Как получить последние значения из базы данных, когда происходит dbupdateconcurrencyException?

Сообщение Anonymous »

У меня есть субъект человека: < /p>

Код: Выделить всё

public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
[ConcurrencyCheck]
public long RowVersion { get; set; }
}
при попытке разрешить исключения параллелистики функция getDataBaseValuesAsync () не возвращает значения, как они находятся в DB, ​​но возвращает исходные значения, которые отражают состояние объекта, когда он был загружен. public override async Task SaveChangesAsync(CancellationToken cancellationToken = default)
{
const int retryCount = 3;
for (int i = 0; i < retryCount; i++)
{
try
{
var result = await base.SaveChangesAsync(cancellationToken);
return result;
}
catch (DbUpdateConcurrencyException ex)
{
if (i == retryCount - 1)
{
throw;
}

foreach (var entry in ex.Entries)
{
if (entry.Entity is Person)
{
var proposedValues = entry.CurrentValues;
var databaseValues = await entry.GetDatabaseValuesAsync();
var originalValues = entry.OriginalValues;

if (databaseValues == null)
{
throw new Exception("Person entity was deleted before update.");
}

foreach (var property in proposedValues.Properties)
{
var proposedValue = proposedValues[property];
var databaseValue = databaseValues[property];
var originalValue = originalValues[property];

if (originalValue != proposedValue)
{
proposedValues[property] = proposedValue;
}
else
{
proposedValues[property] = databaseValue;
}
}

// Refresh original values to bypass next concurrency check
entry.OriginalValues.SetValues(databaseValues);
}
else
{
throw new NotSupportedException(
$"Don't know how to handle concurrency conflicts for entity {entry.Metadata.Name}");
}
}

await Task.Delay(50 * (i + 1), cancellationToken);
}
}

return 0;
}
< /code>
Как получить фактические значения из базы данных? Или в чем может быть проблема?

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

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

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

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

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

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