Зафиксировать исключение в Telerik OpenAccess ORM
У меня был предыдущий вопрос, похожий на этот, но в отношении структуры сущности. С тех пор я пытался использовать Telerik OpenAccess. Вот моя модель:
При выполнении следующей функции примерно один раз каждые 10 секунд, она ведет себя как ожидалось и не исключение. Однако, если я в течение короткого времени произвожу 3 концептуальных вызова этой функции, я получаю эту ошибку.
InvalidOperationException - Not allowed because Commit / Rollback is in progress
Вот функция. Исключение брошено на SaveChanges()
private void NewTaskTaskCompleted(object sender, TaskCompletedEvent e)
{
TASK scheduledTask = entities.TASKs.First(x => x.TASK_NAME == e.ClassName);
scheduledTask.NEXT_RUN = e.NextRun;
//entities.SaveChanges();
TASK_LOG logMsg = new TASK_LOG()
{
TASK = scheduledTask,
MESSAGE = e.TaskResult.Message,
STATUS = e.TaskResult.Status ? "Successful" : "Failure",
TIMESTAMP = e.CompletedTime
};
scheduledTask.TASK_LOGs.Add(logMsg);
//entities.Add(logMsg);
entities.SaveChanges();
}
Разве вызов SaveChanges не блокирует выход из функции, предотвращая следующий вызов функции?
1 ответ
У Telerik стандартно оптимистичное поведение параллелизма. Значение: предполагается, что параллелизма не происходит, если это произойдет, он потерпит крах. До этого нет проверки, поэтому либо вы используете собственный механизм (например, замок).
Смотрите также http://www.telerik.com/help/openaccess-orm/concurrency-control-pessimistic.html