Зафиксировать исключение в 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

Другие вопросы по тегам