1

我之前有一个与此类似的问题,但与实体框架有关。从那以后,我尝试使用 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 调用是否不会阻止函数退出,从而阻止下一次函数调用的发生?

4

1 回答 1

0

Telerik 具有标准的乐观并发行为。含义:假设没有并发发生,如果发生了就会崩溃。之前没有检查,所以要么你使用自己的机制(比如锁)。

另见http://www.telerik.com/help/openaccess-orm/concurrency-control-pessimistic.html

于 2012-10-11T12:30:03.270 回答